扫描仪的功能.nextLine()不接受for循环内的输入?

时间:2017-01-07 08:13:44

标签: java arrays string for-loop while-loop

我需要让用户在变量n中输入数组的大小,然后创建一个单维数组的字符串,并用句子填充它。我还需要确保每个句子以句号结束(.)。所以这就是我所拥有的:

import java.util.*;
class encryption{
        void main(){
                Scanner sc=new Scanner(System.in);
                System.out.println("Enter the number of sentences to be encrypted");
                int n=sc.nextInt();
                String[] a=new String[n];
                System.out.println("Enter the sentences");

                for(int i=0; i<n; i++){
                    a[i]=sc.nextLine();
                    while(a[i].charAt(a[i].length()-1)!='.'){
                        a[i]=sc.nextLine();                                                
                    }
                    if(i%2==0){
                        a[i]=rev(a[i]);
                    }
                    else{
                        a[i]=frwd(a[i]);
                    }

                }
                for(int i=0; i<n; i++){
                    System.out.println(a[i]);
                }
            }

在输入之后,我将使用函数rev(...)frwd(...)处理字符串,然后打印更改的字符串。

它编译得很好,但是在执行时,第一个for循环a[i]=sc.nextLine();中的第一行似乎不起作用。它给我一个直的indexOutOfBounds错误,意味着它直接进入while循环。

如何让它接受输入?

1 个答案:

答案 0 :(得分:0)

在你取变量n中的句子数后, 写下这行代码:

int n=sc.nextInt();
sc.nextLine();