簡體   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