为什么我不能在java中连续输入两个字符串?

时间:2018-01-27 10:50:58

标签: java

我的程序在输入一个字符串后终止。它不接受字符串2输入。

以下是代码片段:

    public static void main (String[] args) {
        Scanner scn= new Scanner(System.in);
        int T ;
        T=scn.nextInt();
        while(T!=0){
            String s1 = scn.nextLine(); // after i give input for the first string ,program terminates!
            String s2 = scn.nextLine(); // program terminates before asking for s2 input
            System.out.println(isMetaString(s1,s2));
            T--;
        }
    }

2 个答案:

答案 0 :(得分:1)

public static void main (String[] args) {
    Scanner scn= new Scanner(System.in);
    int T ;
    T=scn.nextInt();

    // scn.nextLine();  // for enter.
    // here after entering int value, 
    // you must be pressing enter,
    // that 'enter' is getting stored in s1,
    // and then when you give first string it is getting stored in s2 
    // and that is why your program is terminating.

    while(T!=0){
        String s1 = scn.nextLine(); // after i give input for the first string ,program terminates!
        String s2 = scn.nextLine(); // program terminates before asking for s2 input
        System.out.println(isMetaString(s1,s2));
        T--;
    }
}

解决方案:在sca.nextInt()之后添加sca.nextLine()。将解决问题

答案 1 :(得分:0)

T = scn.nextInt(); - 使用此行,您可以为变量int分配T值,但是还有一个新的行字符,您没有处理(这是您在输入后按Enter时创建的字符。您可能希望在此行之后添加sc.nextLine()或更改:

T = scn.nextInt();

为:

T = Integer.parseInt(sc.nextLine());此方法将处理分配给T的int之后的新行字符。

顺便说一下,请记住遵循Java命名约定以保持代码易于阅读以便其他人使用是很好的。命名变量时使用camelCase。