gpt4 book ai didi

java - 无限 while 循环;输入验证;不知道该怎么做才能让它在输入之前读取 if 我应该做什么?

转载 作者:行者123 更新时间:2023-12-01 12:30:21 25 4
gpt4 key购买 nike

我在编程方面还很陌生,所以很抱歉错误的解释和/或写得不好的代码......

无论如何,我目前正在使用“方法重载”进行作业,并且我希望能够获得doubleint 来自用户。

我的第一个代码有效,因此我决定在最后一个 if 语句的末尾添加一个 else 来检查错误的输入并重申整个代码。问题是,虽然代码在您第一次输入数字时工作正常,但如果您输入错误的输入,它将启动 while 循环并继续重新迭代代码块,而不管任何输入。我知道它只是忽略 if 语句,因为它们之前没有任何类型的输入(或任何阻止它的东西?)。我需要某种代码检查获取输入,然后在声明变量类型之前检查它是整数还是 double ...或者如果有更好的方法,请分享...如果您需要更多知识,请回复此帖子或其他什么...在这里另外,它还没有完成,如果您认为它是草稿,请称之为草稿

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) 并确保在必要时将变量 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;
}
}

关于java - 无限 while 循环;输入验证;不知道该怎么做才能让它在输入之前读取 if 我应该做什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25966126/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com