2017-09-26 56 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

相關問題