当前位置: 首页 > 知识库问答 >
问题:

Java返回变量初始化时未初始化的错误

鲁光霁
2023-03-14

我有以下Java代码:

import java.util.Scanner;

public class C2F_F2C {


public static void main(String[] args) {
    boolean isNotValid = false;
    double toConvert;
    do {
        System.out.print("What do you want to convert from Celsius to Fahrenheit? ");
        Scanner in = new Scanner(System.in);
        String toConvertString = in.nextLine();
        isNotValid = false;
        try {
            toConvert = Double.parseDouble(toConvertString);
        }
        catch (java.lang.NumberFormatException e) {
            System.out.println("Error: Not a number");
            isNotValid = true;

        }
    } while (isNotValid);

    double inCelsius = toCelsius(toConvert);
    System.out.println("The value " + toConvert + " in Celsius is " + inCelsius);


}
public static double toCelsius( double fahrenheit ) {

    double celsius = (fahrenheit -32)*(5/9);
    return celsius;


}


}

但是,当我运行它时,它会抛出以下错误:

Exception in thread "main" java.lang.Error: Unresolved compilation problems: 
    The local variable toConvert may not have been initialized
    The local variable toConvert may not have been initialized

    at C2F_F2C.main(C2F_F2C.java:24)

我在do之前初始化了变量。while 循环,并在 try. 中设置值。捕获循环。似乎尚未设置该变量。抱歉,如果这是一个相当基本的问题,但我似乎无法弄清楚。

共有3个答案

戎兴言
2023-03-14

我在do之前初始化了变量。同时循环

不,你没有初始化变量。你只是声明了它。默认情况下,局部变量不初始化。

并在try... catch循环中设置值

是的,你确实这样做了,但想想当<code>try-catch</code>中的初始化语句抛出异常时会发生什么?将处理该异常,并且不会初始化变量。然后在你的程序中,当你试图访问变量时,你期望发生什么?

因此,只需给变量一个默认值。改变:

double toConvert;

到:

double toConvert = 0.0;
黄向明
2023-03-14

你需要初始化局部变量。你认为你已经在try块中初始化了它,但是编译器不认为way.it认为如果try块不运行怎么办??你有没有初始化的局部变量。你必须在声明过程中初始化它。

double toConvert=0.0d;
徐飞龙
2023-03-14

不,您不会在循环和尝试之前初始化它。

这是:

double toConvert;

声明,而不是初始化。

这是:

double toConvert = 0.0;

是初始化。

 类似资料:
  • 问题内容: 我的Java程序中出现以下错误: Java变量未初始化错误…错误:变量nam和r未初始化位置类子级 但是并且已经初始化,但是我仍然遇到相同的错误。 问题答案: 不要获取 默认值 ,应在使用它们之前对其进行初始化,并使用main中的默认值进行初始化,这样就可以了。 顺便说一句,考虑为您的类和变量命名是有意义的。

  • 我在这里看到过类似的问题,如果这看起来像是重复的,我很抱歉,但是类似问题的答案对我没有帮助。所以我有一个方法,它是类的一部分。这里是: 错误表明变量min可能尚未初始化。我不明白这怎么可能是真的。我觉得变量不可能不在for循环之外初始化。请帮忙。谢谢

  • 本文向大家介绍tensorflow 初始化未初始化的变量实例,包括了tensorflow 初始化未初始化的变量实例的使用技巧和注意事项,需要的朋友参考一下 今日在Stack Overflow上看到一个问如何只初始化未初始化的变量,有人提供了一个函数,特地粘贴过来共大家品鉴: 通过tf.global_variables()返回一个全局变量的列表global_vars, 然后以python列表解析式的

  • 问题内容: 以下代码段使我在第1行出现了编译器错误。 据我了解,float用于十进制变量。 我是否遗漏了明显的东西,还是应该始终对小数变量初始化使用强制转换? 编辑:我知道’f’可以在末尾用于浮点变量,但这是强制性的吗? 问题答案: 除非您指定浮点文字只是s,否则它们将被视为s。(类似地,除非另有说明,否则整数文字是s。)将字母追加到数字上使其成为a : JLS具有用于文字值的全面输入规则。不,你

  • 问题内容: 当我尝试编译时: 我得到这些错误: 在我看来,我在方法的顶部初始化了它们。怎么了 问题答案: 你声明了它们,但没有初始化它们。初始化它们是将它们设置为等于一个值: 因为未初始化变量,但在循环中增加了变量(例如),因此会收到错误消息。 Java原语具有默认值,但如下一位用户所述 当声明为类成员时,它们的默认值为零。局部变量没有默认值