相关疑难解决方法(0)

使用java.util.Scanner验证输入

我正在System.in使用一个用户输入java.util.Scanner.我需要验证以下内容的输入:

  • 它必须是非负数
  • 它必须是按字母顺序排列的字母
  • ......等

最好的方法是什么?

java validation java.util.scanner

39
推荐指数
2
解决办法
27万
查看次数

如果输入错误的类型,如何防止扫描程序抛出异常?

这是一些示例代码:

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)

有没有办法让它忽略不是整数的条目或重新提示"有多少是入侵?" 我想知道如何做到这两点.

java text-parsing java.util.scanner

13
推荐指数
1
解决办法
3万
查看次数

如何防止Java中的整数输入?

我试图获取我的代码,以防止用户输入有一个数字.

基本上我希望代码执行如下操作:

  1. 请求输入
  2. 接收输入
  3. 测试输入是否包含数字(例如:5matt vs matt)
  4. 如果包含我想要的数字 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)

我已经有了这个,但我无法弄清楚如何测试输入是否只包含字母.

java

6
推荐指数
1
解决办法
1391
查看次数

如何安全扫描整数输入?

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直到程序被杀死.

扫描整数(或其他类型,我猜)输入,丢弃无效输入并正常继续循环的最佳方法是什么?

java exception input infinite-loop java.util.scanner

5
推荐指数
2
解决办法
2万
查看次数

虽然没有条件

我该怎么说呢:

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 int loops while-loop

3
推荐指数
2
解决办法
1万
查看次数

在java中获取整数输入

我实际上是java编程的新手,我发现很难取整数输入并将其存储在变量中...如果有人可以告诉我如何操作或者提供一个例子,例如添加用户给出的两个数字,我希望它..

java parsing input

1
推荐指数
2
解决办法
2万
查看次数

如何阻止用户在此read()方法中输入String?

每次输入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)

java

1
推荐指数
1
解决办法
66
查看次数

我想限制扫描仪在一个范围内的整数输入

我知道这听起来像是一个重复的问题,但我昨天花了一整天时间在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

0
推荐指数
1
解决办法
92
查看次数