在Java中,当要求用户在循环中重新输入某个字符串时,如何只打印一次文本
我想让用户在字符串类型中输入一个数字,然后检查它是否是数字,如果不是,然后再次要求重新输入字符串。我有这样一个代码:在Java中,当要求用户在循环中重新输入某个字符串时,如何只打印一次文本,java,string,loops,java.util.scanner,Java,String,Loops,Java.util.scanner,我想让用户在字符串类型中输入一个数字,然后检查它是否是数字,如果不是,然后再次要求重新输入字符串。我有这样一个代码: System.out.print("Enter first number: "); firstNum = scan.next(); while(validateNum(firstNum) == false) { System.out.print("Please, enter number only: "); firstNu
System.out.print("Enter first number: ");
firstNum = scan.next();
while(validateNum(firstNum) == false) {
System.out.print("Please, enter number only: ");
firstNum = scan.next();
}
下面是ValidateEnum方法:
private static boolean validateNum(String num) {
if (num.matches("[-+]?[0-9]*\\.?[0-9]+([eE][-+]?[0-9]+)?")){
return true;
}
return false;
}
但问题是,当我测试它并输入一些带有空格的文本时,它会打印“请,只输入一个数字”,这是输入字符串中空格数量的两倍。我尝试从字符串中删除空格,然后检查它,但它仍然会显示许多打印。您正在使用
scan.next()
。这将返回空格之前的内容。您希望scan.nextLine()
扫描用户输入的整行内容
下面是扫描器
类及其方法的示例
简言之:
next()
:扫描下一个完整的令牌
nextLine()。这将返回空格之前的内容。您希望scan.nextLine()
扫描用户输入的整行内容
下面是扫描器
类及其方法的示例
简言之:
next()
:扫描下一个完整的令牌
nextLine()
:扫描整行如果(x==false)或如果(x==true)首先不做
如果(x==false)或如果(x==true)首先不做