Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/360.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_Console Input - Fatal编程技术网

无法从java中的控制台读取输入

无法从java中的控制台读取输入,java,console-input,Java,Console Input,我需要将输入测试用例从控制台读入2D数组和1D数组,但在代码中找不到错误 import java.util.*; import java.lang.*; import java.io.*; class Ideone { public static final int SIZE = 5; public static int card[][]; public static int ball[]; public static

我需要将输入测试用例从控制台读入2D数组和1D数组,但在代码中找不到错误

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


    class Ideone
    {
    public static final int SIZE = 5;
    public static int card[][];
    public static int ball[];

    public static void read()throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        int count=0;
        for(int row = 0; row < SIZE && count < 25; row++){

            String line= br.readLine();
            System.out.println("line"+line);
            //if((line= br.readLine()) != null) {
            int column = 0;
            StringTokenizer st = new StringTokenizer(line);
            while(st.hasMoreTokens()){
                card[row][column] = Integer.parseInt(st.nextToken());
                column++;
                count++;
            }
            column = 0;
        //  }
        }




        int i = 0, b=0;
        String line ;
        while((line =br.readLine() )!= null && i < 75) {

            StringTokenizer st1 = new StringTokenizer(line);

            while(st1.hasMoreTokens()){

                ball[i++]= Integer.parseInt(st1.nextToken());
            }

        }

    }

    public static void printing() {
        System.out.println("Card values\n");
        for(int i=0;i<SIZE;i++) {
            for(int j=0;j<SIZE;j++){
                System.out.print(card[i][j]+"\t");
            }
            System.out.println();
        }

        System.out.println("Ball values\n");
        for(int j=0;j<75;j++) {

            System.out.print(ball[j]+"\t");

            //System.out.println();
        } 
    }


    public static void main (String[] args) throws java.lang.Exception
    {
        card = new int[SIZE][SIZE];
        ball = new int[75];
        for(int t=0 ; t<2 ; t++) {
            read();
            printing();
        }

    }


}
我能够读取第一个测试用例,但在读取第二个测试用例时,我得到了空错误。

第二次通过时:

for(int t=0 ; t<2 ; t++) {
    read();
看起来您希望它重新读取输入。但所有的输入都已被读取


您可以通过组合使用
InputStream.readLimit()
InputStream.mark()
InputStream.reset()
来重置这个小输入流。或者您可以将数据放入一个文件中,并为每次读取创建一个新的
FileInputStream

您如何输入测试数据
readLine
只读取一行假设如果我有一个100个测试用例,它们将被读入同一个阵列卡[]和球[],并且对于每个输入测试用例,我需要在这些阵列上执行一些操作,那么方法是什么?一个选项是将数据读入
card[]
ball[]
,然后将结果放入并行阵列中。这将消除冗余读取和解析。为此,您可能会发现将对数组的引用作为参数和返回值传递很有帮助。他们不必是全局的。嗨,我正在寻找解决这个问题的代码方法。这要求您从文件中读取,因此每次读取都可以使用新的
FileInputStream
。也就是说,说明书中没有要求在同一过程中阅读多次。您应该使用指定的方法签名。它们是实例方法,因此除了
main()
之外,您可以从非常量声明中删除
static
,并且您需要使用
new
创建类的对象。祝你好运
for(int t=0 ; t<2 ; t++) {
    read();
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));