我正在System.in使用一个用户输入java.util.Scanner.我需要验证以下内容的输入:
最好的方法是什么?
这是一些示例代码:
import java.util.Scanner;
class In
{
public static void main (String[]arg)
{
Scanner in = new Scanner (System.in) ;
System.out.println ("how many are invading?") ;
int a = in.nextInt() ;
System.out.println (a) ;
}
}
Run Code Online (Sandbox Code Playgroud)
如果我运行该程序并给它一个int喜欢4,那么一切都很顺利.
另一方面,如果我回答too many它并不嘲笑我有趣的笑话.相反,我得到了这个(如预期的那样):
Exception in thread "main" java.util.InputMismatchException
at java.util.Scanner.throwFor(Scanner.java:819)
at java.util.Scanner.next(Scanner.java:1431)
at java.util.Scanner.nextInt(Scanner.java:2040)
at java.util.Scanner.nextInt(Scanner.java:2000)
at In.main(In.java:9)
Run Code Online (Sandbox Code Playgroud)
有没有办法让它忽略不是整数的条目或重新提示"有多少是入侵?" 我想知道如何做到这两点.
我试图获取我的代码,以防止用户输入有一个数字.
基本上我希望代码执行如下操作:
System.out.println("Error: please do not input a number");继承人(以及为什么它不是一个重复的问题):我不能使用我们还没有学到的循环或其他语句.到目前为止,我们学到的唯一真实陈述是if/else/else if语句.这意味着我不能使用for循环,就像一些答案所暗示的那样.虽然他们是很好的答案和工作,但我会失去使用它们的积分.
System.out.println("Please input the first name: ");
String name1 = in.next();
System.out.println("Please input the second name: ");
String name2 = in.next();
System.out.println("Please input the third name: ");
String name3 = in.next();
name1 = name1.substring(0,1).toUpperCase() + name1.substring(1).toLowerCase();
name2 = name2.substring(0,1).toUpperCase() + name2.substring(1).toLowerCase();
name3 = name3.substring(0,1).toUpperCase() + name3.substring(1).toLowerCase();
Run Code Online (Sandbox Code Playgroud)
我已经有了这个,但我无法弄清楚如何测试输入是否只包含字母.
Scanner scanner = new Scanner();
int number = 1;
do
{
try
{
option = scanner.nextInt();
}
catch (InputMismatchException exception)
{
System.out.println("Integers only, please.");
}
}
while (number != 0);
Run Code Online (Sandbox Code Playgroud)
尽管存在异常处理,但在给出非整数输入时,此代码将进入无限循环.它不是Scanner暂停在下一次迭代中收集输入,而是继续抛出InputMismatchExceptions直到程序被杀死.
扫描整数(或其他类型,我猜)输入,丢弃无效输入并正常继续循环的最佳方法是什么?
我该怎么说呢:
while(input is not an int){
do this
}
Run Code Online (Sandbox Code Playgroud)
我试过这段代码,但我知道这是错的:
int identificationnumber;
Scanner sc3 = new Scanner(System.in);
identificationnumber = sc3.nextInt();
while( identificationnumber != int){ // this line is wrong
Scanner sc4 = new Scanner(System.in);
identificationnumber = sc4.nextInt();
}
Run Code Online (Sandbox Code Playgroud)
请任何建议.谢谢.
我实际上是java编程的新手,我发现很难取整数输入并将其存储在变量中...如果有人可以告诉我如何操作或者提供一个例子,例如添加用户给出的两个数字,我希望它..
每次输入String或Char时,我的read()方法都会崩溃.我怎么能让它只接受整数值.当我输入一个int,它工作正常,但当我输入一个字符串或字符串时,我得到一个重复的"输入帐户打开的那天:null"错误.我必须终止程序才能阻止它.
private void readDay(Scanner keyboardIn) {
boolean success = false;
while (!success) {
try {
System.out.print("Enter the day the account opened: ");
int d = keyboardIn.nextInt();
dateOpened.setDay(d);
success = true;
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
}
// Enter the month, checking for error
private void readMonth(Scanner keyboardIn) {
boolean success = false;
while (!success) {
{
try {
System.out.print("Enter the month the account opened: ");
int m = keyboardIn.nextInt();
dateOpened.setMonth(m);
success = true;
} catch (Exception e) …Run Code Online (Sandbox Code Playgroud) 我知道这听起来像是一个重复的问题,但我昨天花了一整天时间在Stack和Google上进行了广泛的搜索,虽然有不同的解决方案(其中一个是我自己的尝试)我觉得我已经我的代码需要一些指导.
我想简单地创建一个只接受值1到50的扫描仪.在我的主要方法中,我有以下内容:
import java.util.Scanner;
public class test {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int inputInt = getInput(in);
System.out.print(inputInt);
}
public static int getInput(Scanner in) {
System.out.println("Enter the number of questions (between 1-50):");
int input = 0;
while (true) {
input = in.nextInt();
if(input > 50 || input < 1)
break;
System.out.print("Invalid input.\nEnter the number of questions (between 1-50):");
}
return input;
}
}
Run Code Online (Sandbox Code Playgroud)
当输入高于50或低于1时,它似乎没有给我"无效输入"错误.我一直在尝试搜索过去2天的解决方案,我找到的每个解决方案都有自己的问题并试图解决每一个问题,只是将我深入挖掘到一个洞.问题如[1] [2] [3] [4] [5] [6].我觉得在这一点上,如果没有一点指导我就无法理解这一点.
java ×8
input ×2
exception ×1
int ×1
loops ×1
parsing ×1
text-parsing ×1
validation ×1
while-loop ×1