无法从java中的控制台读取输入
我需要将输入测试用例从控制台读入2D数组和1D数组,但在代码中找不到错误无法从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
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));