Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 根据用户输入多次打印二维阵列_Java_Arrays_Io_Multidimensional Array - Fatal编程技术网

Java 根据用户输入多次打印二维阵列

Java 根据用户输入多次打印二维阵列,java,arrays,io,multidimensional-array,Java,Arrays,Io,Multidimensional Array,我之前发布过关于这项任务的帖子,我的程序除了一件事外几乎正常工作。程序会询问用户想要打印什么文件,需要平铺多少次,需要平铺多少次。我的程序将文件读入一个2d数组,然后将其平铺出来。我正在使用三个for循环来尝试打印它,它正在打印正确的数量,但是它只是垂直打印。我试着输入一个空白的println,看看它是否能正确打印,但它不起作用。有人有什么想法吗?下面是将txt文件存储到2d数组中的代码部分以及平铺该文件的方法: import java.io.*; import java.util.*; cl

我之前发布过关于这项任务的帖子,我的程序除了一件事外几乎正常工作。程序会询问用户想要打印什么文件,需要平铺多少次,需要平铺多少次。我的程序将文件读入一个2d数组,然后将其平铺出来。我正在使用三个for循环来尝试打印它,它正在打印正确的数量,但是它只是垂直打印。我试着输入一个空白的println,看看它是否能正确打印,但它不起作用。有人有什么想法吗?下面是将txt文件存储到2d数组中的代码部分以及平铺该文件的方法:

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();
            }
        }
    }

}
import java.io.*;
导入java.util.*;
类TileMap
{
公共静态布尔值是;
公共静态字符响应;
公共静态int MAXSIDE=100;
公共静态扫描仪扫描=新扫描仪(System.in);
公共静态字符串fileName=“”;
公共静态int tilesAcross=0;
公共静态int tilesDown=0;
公共静态int-imageHeight=0;
公共静态int-imageWidth=0;
公共静态字符userInput=0;
静态字符[][]缓冲区=新字符[MAXSIDE][MAXSIDE];
静态文件输入流fstream=null;
公共静态void getImage()
{
System.out.println(“获取图像…”);
尝试
{   
文件=新文件(文件名);
Scanner fstream=新扫描仪(文件);
imageHeight=fstream.nextInt();
imageWidth=fstream.nextInt();
缓冲区=新字符[imageHeight][imageWidth];
int i=0;
while(fstream.hasNextLine())
{
String line=fstream.nextLine();
对于(int l=0;l
在要结束行之前,不要使用println()(因为当前块的右侧没有更多的平铺)

如果需要打印相邻的两个磁贴,则需要打印第一个磁贴的一行,然后再次打印同一行,直到在结束该行之前获得正确的磁贴宽度(使用println)

对于三个平铺宽度,您将在结束该行之前将同一行打印三次


基本上,我要做的是,将缓冲区的循环切换为平铺的循环。对于缓冲区中的每一行,重复它以获得整个平铺的数量,然后用换行符结束该行或使用println(“”)

什么是imageHeight和imageWidth?为什么为零??我猜您正在创建一个大小为[0][0]的数组。