0

以前にこの課題について投稿しましたが、1 つのことを除いて、プログラムはほとんど機能しています。プログラムは、印刷したいファイル、並べて表示する回数、並べて表示する回数をユーザーに尋ねます。私のプログラムはファイルを 2 次元配列に読み取り、それをタイル アウトすることになっています。3 つの for ループを使用して印刷しようとしていますが、正しい量を印刷していますが、垂直にしか印刷されていません。空白のprintlnを入れて、正しく印刷されるかどうかを確認しようとしましたが、機能していません。誰にもアイデアはありますか?txt ファイルを 2 次元配列に格納するコードの一部と、それを並べて表示するメソッドは次のとおりです。

import java.io.*;
import java.util.*;

class TileMap

{
    public static boolean yes;
    public static char response;
    public static int MAXSIDE = 100;
    public static Scanner scan = new Scanner(System.in);
    public static String fileName = "";
    public static int tilesAcross = 0;
    public static int tilesDown = 0;
    public static int imageHeight = 0;
    public static int imageWidth = 0;
    public static char userInput = 0;   
    static char [][] buffer = new char[MAXSIDE][MAXSIDE];
    static FileInputStream fstream = null;

public static void getImage()
{
    System.out.println("Getting Image...");

    try
    {   

        File file = new File(fileName);
        Scanner fstream = new Scanner(file);

        imageHeight = fstream.nextInt();
        imageWidth = fstream.nextInt();

        buffer = new char[imageHeight][imageWidth];
        int i = 0;

        while(fstream.hasNextLine())
        {
            String line = fstream.nextLine();

                for(int l = 0; l < line.length(); l++)
                {
                    buffer[i][l] = line.charAt(l);
                }
            i++;
        }

        /*
        for(int i = 0; i < imageHeight; i++)
        {
            String element = fstream.nextLine();
            for(int j = 0; j < imageWidth; j++)
            {
                buffer[i][j] = element.charAt(j);
            }
        }
        */


        fstream.close();
    }


    catch (Exception e)
    {
        System.err.println("Error: " + e.getMessage());
    }


}




public static void doTileJob ()
    {

    for(int m = 0; m < tilesDown; m++)
    {
        for (int n = 0; n < tilesAcross;n++)
        {   
            for(int i= 0; i < buffer.length; i++)
                {
                    int w = 0;
                    System.out.print(buffer[i]);
                    System.out.println(buffer[w]);
                    w++;
                    }
            System.out.println();
            }
        }
    }

}
4

1 に答える 1

0

行を終了するまで println() を使用しないでください (現在のピースの右側にタイルがなくなるため)。

2 つのタイルを並べて印刷する必要がある場合は、最初のタイルの行を印刷し、次に正しい数のタイル幅になるまで同じ行を印刷してから、行を終了する必要があります (println を使用)。

幅が 3 タイルの場合、同じ行を 3 回印刷してから行を終了します。

基本的には、バッファのループをタイルのループに切り替えます。バッファー内の各行に対して、タイルの数だけ繰り返してから、改行で行を終了するか、println(""); を使用します。

于 2013-09-27T04:45:21.437 に答える