2017-09-26 59 views
1

(这里的业余高手傻瓜Java编码器)。我一直在做这个项目,而且我遇到了一个我无法弄清楚的问题。 以下是我需要帮助的信息: (我正在尝试编写一个程序,以确定驾驶员是否超速,如果是的话,哪张是合适的,以及从帐户中扣除多少钱) 1.如何在if语句中使用reduc变量?当我将它包含在最后一条if语句中时,出现错误...如何将一个真正的布尔变成一个变量

//variables 
    int sbanka = 400; 
    int speed = 60; 
    int speedlimit = 60; 
    int ticket1 = 100; 

    //logic 
    //Ticket 1 
    if(speed > speedlimit + 10) { 
     System.out.println("You will recieve the level 1 ticket"); 
     boolean reduc = true; 
    } 
     else { 
      System.out.println("Your speed was fine."); 
     } 
      //bank account calculation for ticket 1 
      if(reduc == true && sbanka >-100) { 
       sbanka -= 100; 
       System.out.println("we will deduct 100 dollars from your checking account"); 

这是完成的程序。谢谢您的帮助。

package labs; 

public class SpeedingTicket { 

    public static void main(String[] args) { 

    //variables 
    int speed = 50; 
    int speedlimit = 60; 
    String text = ("Your account balance is now "); 
    boolean reduc = false;   

    //tickets 
    int t1 = 100; 
    int t2 = 150; 
    int t3 = 200; 

    //Bank account 
    int sbanka = (400); 


    //logic  
    if(speed > speedlimit + 10) {   
     System.out.println("You are getting a level one ticket"); 
     reduc = true; 
    }  
     else { 
      System.out.println("Your speed was fine."); 
      reduc = false;     
     }  
      if(reduc == true) { 
       System.out.println(text + (sbanka - t1)); 
      } 


    if(speed > speedlimit + 20) { 
     System.out.println("you are getting a level two ticket"); 
     reduc = true; 
    } 
     else { 
      System.out.println("Your speed was fine."); 
      reduc = false; 
     }   
      if(reduc == true) { 
       System.out.println(text + (sbanka - t2)); 
      } 


    if(speed > speedlimit + 30) { 
     System.out.println("This is a serious offence, you are getting a level 3 ticket"); 
     reduc = true; 
    } 
     else { 
      System.out.println("Your speed was fine."); 
      reduc = false; 
     }   
      if(reduc == true) { 
       System.out.println(text + (sbanka - t3)); 
      } 

} 

}

+0

阅读的变量范围。如果您在错误陈述中发现错误并提出您的问题 –

+0

您已经在'if {...}'范围内声明了变量,这意味着您不能在'if {...}块。将它的减速移动到if语句的上方并将其设置为默认值(我假设为false) – MadProgrammer

回答

0

你下如果stament if(speed > speedlimit + 10){} =>局部变量声明boolean reduc = true;。所以你不能在if(){}之外使用它。
良好的阅读http://www.geeksforgeeks.org/variable-scope-in-java/
重构象下面这样:

//variables 
    int sbanka = 400; 
    int speed = 60; 
    int speedlimit = 60; 
    int ticket1 = 100; 
    boolean reduc = false; // <= Fix your logic here by yourself 

    //logic 
    //Ticket 1 
    if(speed > speedlimit + 10) { 
     System.out.println("You will recieve the level 1 ticket"); 
     reduc = true; 
    } 
     else { 
      System.out.println("Your speed was fine."); 
     } 
      //bank account calculation for ticket 1 
      if(reduc == true && sbanka >-100) { 
       sbanka -= 100; 
       System.out.println("we will deduct 100 dollars from your checking account"); 
+1

1.它不是“有”是“布尔”的对象“版本”,而是2。没有提供默认值,这会导致新的编译器错误 – MadProgrammer

+0

@MadProgrammer,谢谢。我刚刚更新。 – 2017-09-26 01:36:47

+0

对象布尔永远不会被分配!在方法中分配值之前,您无法访问变量。并且如果它处于类级别,则默认情况下它将被初始化为空。当拆箱开始时,您最终可能会遇到NullPointerException! – LeTex

相关问题