以下是我的计划说明:
此文件的第一行将包含一个数字,表示将跟随多少行。之后的每一行都会有一个单词和一个整数。填充两个数组,一个用于单词,一个用于整数。填充数组后,转到String数组的每个元素,并打印出该字符串,表示并行数字数组表示要打印的次数。
但是,当我尝试打印出答案时,会发生错误,说从我应该阅读的文件中读取时没有线路可以接收。
Scanner input = new Scanner(new File("parallel.txt"));
int numLine = input.nextInt();
int [] array = new int[numLine];
String [] Stringarray = new String[numLine];
for (int i = 0; i< numLine; i++)
{
Stringarray[i] = input.next();
array[i] = input.nextInt();
input.nextLine();
}
for (int i = 0; i<Stringarray.length; i++)
{
for (int a = 0; a<array[a]; a++)
out.print(Stringarray[i] + " ");
out.println();
}
}
}
答案 0 :(得分:0)
在代码的第一部分中,您读取了文件中的第一个整数,但是您无法读取换行符。然后,您尝试使用Stringarray[i] = input.next()
从第二行读取第一个令牌,但您的扫描仪仍在第一行等待,但没有下一行。您可以这样修复:
int numLine = input.nextInt();
input.nextLine();
我更喜欢一次读取整行,然后单独解析它,它更清晰。例如,没有任何错误检查:
String line = input.nextLine();
int number = Integer.parseInt(line); // parse the entire line as an integer
String line = input.nextLine();
String[] parts = line.split(" "); // split the line on spaces
String word = parts[0]; // treat the first part as a string
int number = Integer.parseInt(parts[1]); // parse the second part as an integer
在代码的第二部分中,要打印单词X次,您需要使用与单词数组相同的索引索引数字数组。
for (int i = 0; i < Stringarray.length; i++) // for each word in the Stringarray
{
for (int a = 0; a < array[i]; a++) // index with i, not a
System.out.print(Stringarray[i] + " "); // print the word
System.out.println();
}
答案 1 :(得分:0)
您想要打印与文件
中的整数对应的String数组元素所以你有一个如下的输入文件
3 //indicate the line number
string1 6
string2 7
string3 5
并且您期望输出如下
string1 string1 string1 string1 string1 string1
string2 string2 string2 string2 string2 string2 string2
string3 string3 string3 string3 string3
我不想改变你的逻辑,你可以用它来获取输出
for (int a = 0; a<array.length; a++)
for(int k=0;k<array[a];k++)
System.out.print(Stringarray[a] + " ");
System.out.println()
Stringarray[a]
- &GT;这里我们不会得到任何Arrayindexbound
例外,因为Stringarray
和array
的长度始终相同