首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java userInput验证

Java userInput验证
EN

Stack Overflow用户
提问于 2020-10-10 00:24:56
回答 2查看 47关注 0票数 0

我需要帮助,这部分代码,我是相当新的编码,所以我不是很好,下面是问题,要求用户输入一个双(数字),如果输入的值不是一个双,它继续问他们,直到他们进入一个双。一旦他们进入一个双重,它检查双输入是否在范围内(1-25之间)。它将继续提示,直到age1在这个范围内。

代码语言:javascript
复制
Scanner input = new Scanner(System.in);

while(!input.hasNextDouble()) 
{
    input.nextLine();
    System.out.print("Input is not a number ReEnter:");
 }
 double age1 = input.nextDouble();
 while (age1 < 1 || age1 > 25)
 {
 System.out.print( "Enter the Age between 1-25 Only!");
       age1 = input.nextDouble();
         }
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-10-10 01:37:06

当您需要检查范围时,请使用&&,因为我们需要在这些范围之间使用

另外,你的条件太弱了,while (age1 < 1 || age1 > 25),应该是

while (age1 >= 1 && age1 <= 25)

使用wrapper类将字符串转换为double

代码语言:javascript
复制
            Scanner sc = new Scanner(System.in);
            System.out.print("Enter a double number:");
            String d = sc.next();
            while(true) {
                boolean dot = false;
                for(int i = 0 ; i < d.length() ; i++) {
                    char ch = d.charAt(i);
                    // checking for a decimal 'dot'
                    if(ch == '.') {
                        dot = true;
                        break;
                    }
                }
                if(dot == false) {
                    System.out.print("Input is not a double number ReEnter:");
                    d = sc.next();
                }else {
                    // wrapper class
                    double age = Double.parseDouble(d);
                    if(age >= 1 && age <= 25) {
                        System.out.println("Just prefect");
                        break;
                    }else {
                        System.out.print( "Enter the Age between 1-25 Only!");
                        d = sc.next();
                    }
                }// else block  
            }//while block

输出:

代码语言:javascript
复制
Enter a double number:1
Input is not a double number ReEnter:20
Input is not a double number ReEnter:26.00
Enter the Age between 1-25 Only!15
Input is not a double number ReEnter:15.0
Just prefect
票数 1
EN

Stack Overflow用户

发布于 2020-10-10 01:46:17

你的代码运行得很好。虽然它不会检查到达第二个while循环后是否输入了有效的double,但是最好将验证合并到一个循环中:

代码语言:javascript
复制
Scanner input = new Scanner(System.in);

        while(true) 
        {
            if(!input.hasNextDouble()) {
                input.nextLine();
                System.out.print("Input is not a number ReEnter:");
            }else {         
                double age1 = input.nextDouble();
                if (age1 < 1 || age1 > 25){
                    System.out.print( "Enter the Age between 1-25 Only!");
                    input.nextLine();
                }else {
                    break;
                }
            }
         }
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64288801

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档