java - java编译时变量初始化错误

标签 java

我有两个 Java 程序。

方案一

class Ideone
{
    public static void main (String[] args)
    {

        double price = 10;
        String model;
        if (price > 10)
            model = "Smartphone";
        else if (price <= 10)
            model = "landline";
            System.out.println(model);
    }
}

输出:- 变量模型可能尚未初始化(错误)

方案二:-

class Ideone
{
    public static void main (String[] args)
    {
           double area = 10.98;
           String color;
           if (area < 5)
               color = "red";
           else
               color = "blue";
           System.out.println(color);
    }
}

输出:- 蓝色

我的问题是,由于这两个程序几乎相似,为什么我得到的变量可能尚未初始化?

如果第一个程序出现问题,第二个程序不应该也会抛出相同的错误吗?

最佳答案

编译器足够智能。

在第二种情况下,您完全满足所有条件。在所有条件之后还有一个 else 部分需要保存。

但是在你的第一种情况下没有其他部分。这意味着如果没有通过任何条件,则那里有一个空白字段。

您必须提供一个 else 来确保初始化部分

double price = 10;
        String model;
        if (price > 10)
            model = "Smartphone";
        else if (price <= 10)
            model = "landline";
        else
           model = null

或者提供默认值 null 或根据您的需要。

double price = 10;
        String model =null;
        if (price > 10)
            model = "Smartphone";
        else if (price <= 10)
            model = "landline";

关于java - java编译时变量初始化错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33166281/

相关文章:

java - 将 Java 程序转换为 C++

java - 如何修复这些丢失的库?

java - 多线程 Java 正则表达式

java - 为什么 Math.tan() 对于不同的精度级别返回不同的值?

java - 在新环境中首次运行 Spring Boot 应用程序时如何运行 data.sql 脚本?

java - 如何在 Camel 中路由使用 SOAP Web 服务的端点链?

java - 从非类名符号访问类的静态字段

java - Log4j 识别 logj4.debug,但不尊重 log4j.properties 设置?

java - 最佳实践 - 从 View 访问域对象列表?

java - 连接关闭时结果集未关闭?