我的程序在输入一个字符串后终止。它不接受字符串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--;
}
}
答案 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。