繁体   English   中英

无限的while循环; 输入验证; 不知道该如何做才能使其在输入之前被读取,如果该怎么办?

[英]infinite while loop; input validation; don't know what to do to make it read an if before input is placed what should I do?

我是编程新手,对不起错误的解释和/或错误的代码编写...

无论如何,我目前正在使用“ method overload ”进行分配,我希望能够从用户那里获得doubleint

我的第一个代码起作用了,所以我决定在最后一个if语句的末尾添加一个else ,该语句检查错误的输入并重复整个代码。 问题是,尽管您第一次输入数字时代码运行良好,但是如果输入错误,它将启动while循环,并继续重复执行代码块,无论输入内容如何。 我知道它只是忽略了if语句,因为它们不是以前的任何形式的输入(或任何停止它的内容?)。 我需要某种方式来检查代码以获取输入,然后在声明变量类型之前检查它是整数还是双精度型...或者是否有更好的方法,请共享...如果您需要更多的知识来对此进行回复发布或执行其他操作...此处,还没有完成,如果您称其为草稿,

public class LoanRates {
    public static void main(String[] args){

        Scanner in = new Scanner(System.in);
        boolean x = false;
        while(x = true){
            System.out.println("please enter a number");
            x = false;
            if (in.hasNextInt()){
                int rate = 0;           
                rate = getNumbers(rate, in);
                System.out.println(rate);
                break;
            } else if( in.hasNextDouble()){
                double rate = 0;
                System.out.println("please enter a number");
                rate = getNumbers(rate, in);
                System.out.println(rate);
                break;
            }else {                 
            System.out.print("please enter a number");}         
        }   
        System.out.print("did it work?");
    }

    public static double getNumbers(double rate, Scanner in){
        rate =in.nextDouble();
        return rate;
    }

    public static int getNumbers(int rate, Scanner in){
        rate = in.nextInt();
        return rate;
    }
}

您正在使用while(x = true)那么它始终为true

首先,您必须将x变量初始化为true 否则,它将不会进入while循环内boolean x = true;

尝试while(x == true)并确保在必要时将variable x的值更改为false 但是最好将double或int值传递,而不是将扫描器引用传递给getNumbers方法

package test;

import java.util.Scanner;
import javax.swing.JOptionPane; 

public class LoanRates {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        while (true) {
            System.out.println("Please enter a number");
            String input = in.next();
            try {
                int rate = Integer.parseInt(input);
                // you can use the rate variable and change your method to accept the input value
                System.out.println(getNumbers(rate));
                break;
            } catch (NumberFormatException e) {
                try {
                    double rate = Double.parseDouble(input);
                    // you can use the rate variable and change your method to accept the input value
                    System.out.println(getNumbers(rate));
                    break;
                } catch (NumberFormatException ex) {
                    System.out.println("Invalid number.");
                }
            }
        }
        System.out.print("did it work?");
    }

    public static double getNumbers(double rate) {
        // rate calculation logic
        return rate;
    }

    public static int getNumbers(int rate) {
        // rate calculation logic
        return rate;
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM