2013-10-20 44 views
0

在最后6条if语句中出现错误“局部变量操作可能未初始化”。我不知道我想要什么。请帮忙! :(我已经尝试了日食建议的修复,并试图修复它在我自己并没有什么作品...局部变量动作可能未被初始化?

import java.util.Scanner; 
import static java.lang.System.out; 

public class test2 { 

enum dog {sleeping, eating, peeing, pooping, dead, robot} 

public static void main(String args[]) { 
    Scanner myScanner = new Scanner(System.in); 
    dog action; 
    int heartrate; 

    out.println("What is the heart rate of your dog? I will be able to tell you what the dog is doing from that information."); 
    heartrate = myScanner.nextInt(); 

    if (heartrate >= 60 || heartrate <= 120) { 
     action = dog.sleeping; 
    }else if (heartrate == 0) { 
     action = dog.dead; 
    }else if (heartrate > 500) { 
     action = dog.robot; 
    }else if (heartrate >= 150 || heartrate <= 200) { 
     action = dog.peeing; 
    }else if (heartrate >= 150 || heartrate <= 200) { 
     action = dog.pooping; 
    }else if (heartrate >= 150 || heartrate <= 200) { 
     action = dog.eating; 
    } 
    out.print("Your dog is currently "); 
    if (action == dog.sleeping) { 
     out.print("sleeping "); 
    } 
    if (action == dog.dead) { 
     out.print("dead "); 
    } 
    if (action == dog.robot) { 
     out.print("a robot."); 
    } 
    if (action == dog.peeing) { 
     out.print("peeing "); 
    } 
    if (action == dog.pooping) { 
     out.print("pooping "); 
    } 
    if (action == dog.eating) { 
     out.print("eating "); 
    } 
    System.out.println("."); 
} 
} 
+2

它希望*确保*行动已初始化,你没有。 –

+1

**阅读错误信息。**您需要确保您的代码为'action'指定了一个值。 –

+1

'if(heartrate> = 60 || heartrate <= 120)'意味着一只沉睡的狗可能有负面的心率......也许你想'&&'在'x和y'之间而不是'||' – A4L

回答

2

你必须给变量的值,然后再使用它。例如action下不初始化所有条件,所以你不能安全地使用它。

一个简单的办法是给喜欢

dog action = dog.dead; 

取而代之的是一系列if(action ==报表的默认值,你可以使用一个switch块。

顺便说一句,你的三个条件是一样的,你的IDE也应该警告你。