我的程序要求用户输入一串用逗号分隔每个数字的数字,如(1,2,3,-4,55.0,100)。唯一有效的符号是“0” - “9”,“ - ”,“。”和“,”。我无法弄清楚如何限制这些符号的输入。
import java.util.Scanner;
import java.util.StringTokenizer;
public class Lab9Question2 {
public static void main(String[] args) {
double total = 0.0;
boolean askMore = true;
Scanner Keyboard = new Scanner(System.in);
while (askMore) {
System.out.println("Enter a series of numbers separated only by
commas or type QUIT to exit:");
String input = Keyboard.nextLine();
String tokens[] = input.split(",");
for (String str : tokens)
{
total += Integer.parseInt(str);
}
System.out.println(total);
if (input.equalsIgnoreCase("QUIT")){
askMore = false;
}
}
Keyboard.close();
}
}
这是我到目前为止,当有人输入不允许的内容时,它仍然不会显示无效输入。
boolean askMore = true;
boolean inputValid = true;
Scanner Keyboard = new Scanner(System.in);
while (askMore) {
total = 0.0;
System.out.println("Enter a series of numbers separated only by
commas or type QUIT to exit:");
String input = Keyboard.nextLine();
inputValid = input.matches("[0-9]+" + "," + ".");
if (inputValid = false){
System.out.println("Invalid input");
}
答案 0 :(得分:0)
有两种方法可以实现这一点:
您可以将System.out.println("Enter a series of numbers separated only by
commas or type QUIT to exit:");
String input = Keyboard.nextline()
置于循环中。输入完成后,使用Regex验证输入是否有效。如果没有,请发送消息并让用户编辑输入。如果没问题,请转到input.Split()
另一种选择是获取每个键盘的输入并识别输入是否无效。然后,您可以突出显示输入框边框红色或以其他方式提醒用户输入无效。
编辑:原始答案中的代码行丢失,格式化。