gpt4 book ai didi

java - Try-Catch 和 If 语句的问题

转载 作者:行者123 更新时间:2023-12-01 12:51:40 26 4
gpt4 key购买 nike

我目前正在开发一个应用程序,其中用户输入货币值,并且使用尽可能少的硬币来产生该值的变化。我已经使程序正常运行,但验证时遇到问题。为了确保仅输入货币值,我有一个 try catch 来确保不输入字母,并使用 if 语句来确保仅输入小数点后两位的数字。为了尝试使其更整洁,我将它们分成两个不同的方法,在我的 main.c 中执行。

这两种方法都可以完成工作并起作用。我遇到的问题是,一旦他们生成消息,即使没有输入正确的货币值,程序的其余部分仍然会运行。我该如何做才能提示用户输入另一个号码。

所有相关代码如下所示。先感谢您。这是主要内容:

public static void main(String[] args ) {

GetValue.AskValue();
GetValue.CheckValue1();
GetValue.CheckValue2();
CalculateChange.Rounding();
CalculateChange.GenerateDollars();
CalculateChange.GenerateHalfDollar();
CalculateChange.GenerateQuarter();
CalculateChange.GenerateDime();
CalculateChange.GeneratePennyX2();
CalculateChange.GeneratePenny();
CalculateChange.GenerateResults();

}

这些位于一个类中:

static void CheckValue1(){

Scanner sc = new Scanner(System.in);
try {
System.out.println("Please input an integer: ");
//nextInt will throw InputMismatchException
//if the next token does not match the Integer
//regular expression, or is out of range
number =sc.nextDouble();
} catch(InputMismatchException exception) {
//Print "This is not an integer"
//when user put other than integer
System.out.println(" Please do not type letters");

AskValue();
}
// number = sc.nextDouble();


}
static void CheckValue2(){

String[] splitter = Double.toString(number).split("\\.");
splitter[0].length(); // Before Decimal Count
int decimalLength = splitter[1].length(); // After Decimal Count
if (decimalLength <= 2){
java.math.BigDecimal bd = new java.math.BigDecimal(String.valueOf(number));
Input = Input.add(bd);
} else{
System.out.println(number +" Is not a valid number. You may only go to two decimal palces");
}

}

最佳答案

我认为最好的做法是从方法中抛出异常,如下所示:

static void CheckValue1() throws InputMismatchException {
...
number = sc.nextDouble(); // no try-catch
}

static void CheckValue2() throws InputMismatchException {
if (decimalLength <= 2) {
...
} else {
throw new InputMismatchException("...");
}

public static void main(String[] args ) {
boolean success;
while (!success)
try {
GetValue.AskValue();
GetValue.CheckValue1();
GetValue.CheckValue2();
success = true;
} catch (InputMismatchException e) {
...
}
}
}

这样您就可以将逻辑和错误处理分开。

关于java - Try-Catch 和 If 语句的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24183953/

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