2017-09-26 7 views
1

(ここではアマチュア高校のJavaコーダーです)。 Iv'eはこのプロジェクトに取り組んでおり、Iv'eは私が理解できない問題に遭遇しました。 私は助けが必要です: (私は、ドライバがスピードを上げているかどうかを判断するプログラムを書こうとしています、もし3枚のうちどれが適切か、そしてどれくらいの金額をアカウントから控除するか) 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

読む:http://www.geeksforgeeks.org/variable-scope-in-java/
リファクタリング以下のように読むことが
良いです。そして、あなたの質問でエラー文を投稿してください。 –

+0

あなたは 'if {...}'スコープ内で変数を宣言しました。つまり、 'if {...}'の外では使用できません。ブロック。減速を 'if'文の上に移動してデフォルト値(' false'の私が仮定します)を与えます – MadProgrammer

答えて

0

あなたはstament if(speed > speedlimit + 10){} =>ローカル変数であれば下boolean reduc = true;を宣言しました。だからあなたはそれをif(){}の外で使うことはできません。変数のスコープの

//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. 'boolean'のオブジェクト" version "と"新しいコンパイラエラーの原因となるデフォルト値を提供していません – MadProgrammer

+0

@MadProgrammer、ありがとうございます。私はちょうど更新した。 –

+0

オブジェクトのブール値は決して割り当てられません!メソッドに値を代入する前に変数にアクセスすることはできません。クラスレベルであれば、デフォルトでnullに初期化されます。 unboxingが起動すると、NullPointerExceptionが発生する可能性があります。 – LeTex

関連する問題