gpt4 book ai didi

java - 在Java中,如何使用在程序其他位置的try/catch block 内初始化的变量?

转载 作者:行者123 更新时间:2023-12-02 11:06:53 24 4
gpt4 key购买 nike

我有一个基本的二次公式程序,但是如果输入了除 double 数以外的任何值,我已经修改了程序的开头以结束程序。但是,因为这样做了,所以我似乎无法使用程序其他任何地方输入的值。以下是前几行:

import java.util.Scanner;

public class QuadraticFormula
{
public static void main(String[] args)
{
double a, b, c;
Scanner reads = new Scanner(System.in);

System.out.println("General equation: \"ax^2 + bx + c\"");
System.out.print("Enter value of \"a\": ");

try {
String doubleString = reads.nextLine();
a = Double.parseDouble(doubleString);
}
catch (Exception e) {
System.out.println("Invalid Data Type. Please enter a number");
}

该程序的其余部分要求b和c的值,然后执行二次方程式,重新调整输入的方程式的根。但是,由于a的值是在try部分中定义的,因此编译器告诉我a尚未初始化。我该如何解决?

编辑:我确实想使用用户在程序中输入的数据(存储为doubleString)–但是是一个数字。我的直接问题是编译器错误,但是即使在try块中,也可以使用任何方式来输入输入的信息吗?因为当我尝试将double a等同于doubleString时,它说doubleString不存在。

最佳答案

就像@Elliot Frisch所说的那样,您可以将a初始化为值(0),并注意不要因解析失败而得到任何错误的值。
在您的情况下,这可能意味着返回/退出带有错误消息的程序。

这实际上是一种常见的模式。

import java.util.Scanner;

public class QuadraticFormula
{
public static void main(String[] args)
{
double a = 0, b, c;
Scanner reads = new Scanner(System.in);

System.out.println("General equation: \"ax^2 + bx + c\"");
System.out.print("Enter value of \"a\": ");

try {
String doubleString = reads.nextLine();
a = Double.parseDouble(doubleString);
}
catch (Exception e) {
System.out.println("Invalid Data Type. Please enter a number");
return;
}
//do work with a

关于java - 在Java中,如何使用在程序其他位置的try/catch block 内初始化的变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36781723/

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