2016-11-28 11 views
-3

モジュールに失敗するまでに何日かかるかをプログラムが出力するようにしたい(モジュールを失敗させるには、マークは40未満でなければならない)。
が(それぞれ「日」はデクリメントされますあなたはループを通過8回後82の入力マークと10
の日数を与える、マークはそれが37になる9回後42
に達するだろうと言いますマーク5)。私はマークが40ループとif文

下に行くの私は、出力日数がかかりますことができる方法を見つけ出すことはできません

はここに例を示します

Mark: 82 
Days: 10 

は出力:

(0) 82 (1) 77 (2) 72 (3) 67 (4) 62 (5) 57 (6) 52 (7) 47 (8) 42 (9) 37 (10) 32 

この作業は、失敗するまでに最長で8日間かかる可能性があります。(ここでの問題だ)

import java.util.Scanner; 
public class Late { 

    public static void main(String[] args) { 


     int mark; 
     int numberOfDays; 

     Scanner scn = new Scanner(System.in); 

     System.out.println("Input mark"); 
     mark = scn.nextInt(); 

     System.out.println("Input number of days"); 
     numberOfDays = scn.nextInt(); 

     for (int i = 0; i <= numberOfDays; i++) { 
      System.out.println("(" + i + ")" + mark); 
      mark -=5 ; 
      if (mark < 20) { 
       System.out.println("Mark cant be lower than 20"); 
       break; 
      } 

      } 
     if (mark < 40) { 
      System.out.println("It takes " + numberOfDays + " to fail"); 

     } 


    } 
} 
+0

この '(0)82(1)77(2)72'構文は何ですか?ただリストだけであれば、 '[82、77、72]'はより理解しやすいです。 –

+0

はい、私はアルゴリズムを完了した後、そのアスペクトを扱うことができます –

+0

'' 'i + –

答えて

2

iは、ここ数日間カウンタであり、それは、mark < 40

は、しかし、あなたが本当にチェック< 20以外のループを必要としないときあなたは印刷する必要があります何ですか?

int mark = 82; 
int daysToFail = (mark - 40)/5; // This is 8 
if (daysToFail <= numberOfDays) { 
    System.out.printf("It takes %d days to fail\n", daysToFail); 
} else { 
    System.out.println("You passed!"); 
} 

あなたは、ループを使用する必要がある場合、あなたはなぜあなたがループしているmark < 40

+1

ループが20よりも低くなるのを止める必要があります。はい –

0

検出したときにiは、述べたように、その後、break追加でしょうか?どうしてですか:

System.out.println("It takes " + (int) Math.ceil((mark-39)/5.0) + " days to fail"); 

ここで、markは初期入力値ですか?

+0

変数をマークするので、100にすることができます。 –

+0

この場合、「失敗するまでに13日かかります」というメッセージが表示されます。それは意図ではありませんか? –