Scanner.nextLine()返回null

时间:2015-02-20 07:26:25

标签: java

我写过这段代码:

class PerfectPair {
    public static void main(String args[]) throws IOException{
        Scanner scan = new Scanner(System.in);
        int test=scan.nextInt();
        StringBuffer b=null;
        String a=null;
        while(test!=0){
            a=scan.nextLine();
            b=new StringBuffer(scan.nextLine());
            System.out.println(a);
            String reverse=b.reverse().toString();
            if((a.length()!=b.length()) || !(reverse.equals(a))){
                System.out.println("No");
            } 
            else 
            {   
                if((a.length()==b.length()) && (reverse.equals(a))) System.out.println("Yes");
            }

            --test;
        }
    }
}

输入的输入:

1
aa
ab

但变量a的值为null ..WHY ??请解释一下。也请更正代码,以便读取完整的输入。

2 个答案:

答案 0 :(得分:2)

那是因为你输入1然后输入。所以你的nextLine方法调用只读取返回键,而nextInt只读取整数值而忽略返回键。为了避免这个问题:

读完输入后,你会打电话给:

int test=scan.nextInt();
scan.nextLine();//to read the return key.

如果你想避免这种情况,那么我建议你读完整行,然后将其转换为整数。有点像:

int test=Integer.parseInt(scan.nexLine());

答案 1 :(得分:1)

使用时

int test=scan.nextInt();

进入整数后你推进的回车不会从输入流中读出,所以你可以做的是

int test=scan.nextInt();
scan.nextLine();