我不能在我的程序中拿起回车

时间:2017-12-08 02:10:26

标签: java arrays java.util.scanner

以下是我的计划说明:

此文件的第一行将包含一个数字,表示将跟随多少行。之后的每一行都会有一个单词和一个整数。填充两个数组,一个用于单词,一个用于整数。填充数组后,转到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();
        }

}

}

2 个答案:

答案 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例外,因为Stringarrayarray的长度始终相同

相关问题