我需要阅读格式的数据:
2
4
7
6 4
2 5 10
9 8 12 2
数据需要来自默认输入流System.in。我正在使用包装在BufferedReader中的InputStreamReader,所以我能够逐行读取。
InputStreamReader isr=new InputStreamReader(System.in);
BufferedReader in=new BufferedReader(isr);
String x=in.readLine();
int numcase=Integer.parseInt(x);
for(int i=1;i<=numcase;i++){
System.out.println("");
x=in.readLine();
int n=Integer.parseInt(x);
int[][]t=new int[n+1][n+1];
for(int j=1;j<=n;j++){
System.out.println();
x=in.readLine();
StringTokenizer st=new StringTokenizer(x);
for(int k=1;k<=1;k++){
x=st.nextToken();
int nume=Integer.parseInt(x);
t[j][k]=nume;
}
}
问题是,如果空白的System.out.println语句不在那里,它会拒绝读取前两行的输入行。事情是,我提交代码监视输出流,因此输出错误的答案将我的输出评级为错误。
答案 0 :(得分:1)
StringTokenizer
,因为它已被弃用。for (i = 0, i < size; i++)
而不是i=1
和i <= size
。我猜你的最后一个编程语言是Visual Basic。
new int[n][n]
与上述零索引一起使用。readLine
,String.split(" ")
如果您可以详细说明输入格式需要的内容和所需的输出,我可以帮助您更好地阅读它。
答案 1 :(得分:0)
我不确定您的期望,但写入system.out对您从system.in读取的内容没有影响。
那里有关于你的代码的一些指示:
String x=in.readLine();
int numcase=Integer.parseInt(x);
for(int i=1;i<=numcase;i++){
此循环将输入两次。
x=in.readLine();
int n=Integer.parseInt(x);
int[][]t=new int[n+1][n+1];
n将为4,数组大小为5乘5.为什么?我无法理解这背后的原因。
for(int j=1;j<=n;j++){
此循环将执行4次。每次读一行。
StringTokenizer st=new StringTokenizer(x);
for(int k=1;k<=1;k++){
即使可能有多个令牌,此循环也始终只会输入 ONCE 。
int nume=Integer.parseInt(x);
t[j][k]=nume;
因为k总是1,所以你只会填写2d数组中的一行/列。
结论。 印刷语句没有任何魔力。
代码正在做它应该做的事情。
考虑一下您尝试做什么,并打印出变量值,以便在编码时确认行为。
我很确定你是在尝试用数字填充二维数组,问题在于条件超过k但是因为我真的不知道你想要做什么,所以我不能100%肯定。
修改强>
答案 2 :(得分:0)
尼克姓名
根据您的数据集,以下是您阅读输入的方式......
2 ←line 3
4 ←line 7
在此行之后 7 ←line 12
,您尝试对x进行标记(仅包含"7"
),但随后您将中断
6 {4}从k
循环读取其余的输入(以一种非常奇怪的方式)
2 5 10
9 8 12 2
我很好奇你是否应该在[row][cols]
阵列的t[][]
中保存令牌!
1 InputStreamReader isr=new InputStreamReader(System.in);
2 BufferedReader in=new BufferedReader(isr);
3 String x=in.readLine();
4 int numcase=Integer.parseInt(x);
5 for(int i=1;i<=numcase;i++){
6 System.out.println("");
7 x=in.readLine();
8 int n=Integer.parseInt(x);
9 int[][]t=new int[n+1][n+1];
10 for(int j=1;j<=n;j++){
11 System.out.println();
12 x=in.readLine();
14 StringTokenizer st=new StringTokenizer(x);
15 for(int k=1;k<=1;k++){
16 x=st.nextToken();
17 int nume=Integer.parseInt(x);
18 t[j][k]=nume;
19 }
20 }
21