以下是回文程序。如果它是回文,它将打印YES否则NO。 我无法理解呼叫的不同之处:
> int n=Integer.parseInt(in.nextLine());
> or int n=in.nextInt();
因为两人都在做同样的工作。
第一个是将String
作为输入,然后将其转换为int
第二个是直接int
。
当第一个被采取时没有错误。 但是当第二个被拿到它然后它被存储在n然后它打印YES。(当调试时我发现它存储在n但是它跳过输入字符串str然后它与str和s比较并打印YES)。
所以任何人都可以解释这背后的逻辑。
public class Test1 {
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
//int n=Integer.parseInt(in.nextLine());
int n=in.nextInt();
while(n!=0){
String s="";
String str=in.nextLine();
for(int i=str.length()-1;i>=0;i--){
s=s+str.charAt(i);
}
if(str.equals(s) ){
System.out.println("YES");
}
else{
System.out.println("NO");
}
n--;
}
}
}
答案 0 :(得分:0)
我想,对于Scanner,您希望验证字符串...在这种情况下,如果输入不是数字,则此行int n=in.nextInt();
将抛出java.util.InputMismatchException
异常。
使用StringBuilder
更容易实现验证,如下所示:
Scanner in=new Scanner(System.in);
String original = in.nextLine();
StringBuilder reversa = new StringBuilder(original).reverse();
if (reversa.toString().equals(original)) {
System.out.println("YES");;
} else {
System.out.println("NO");;
}