2016-11-28 5 views
0

私の質問のより良い例を提供するために作ったプログラムを簡単に見ていきましょう。ループ内のn番目の項はどのようにして見つけられますか? java

ループコード

ます。public void scheme1(int型D){

 // first modification 
    if (mark<=20){ 
      System.out.print("\nBecause mark under 20 mark stays as its original value. mark="+mark); 
      return; 
    } 
    int total = mark; 
    int finalMark=20; 

    System.out.print("Scheme 1"+"\n"); 

// Loop 
    for(int loopParameter = START_CONDITION; 
    loopParameter <= d;loopParameter++){ 
     System.out.print("(" + loopParameter + ") " + total + " "); 
    total = total + constantDiffSch1; 

     // second modification 

    if (total < 40){ 
     System.out.print("\nThis work can be up to " + loopParameter); 
     return; 
     } 

     // third modification 
     if (total<=20){ 
     System.out.print("\nBecause mark drops below 20, mark stays as 20. final mark="+ finalMark); 
     return; 
     } 
} // End 
System.out.print("\n\n"); 

}

はこれが何であるかを私のプログラムの出力

を入力してくださいマーク: 64

ディスプレイ日のください入力番号:10

スキーム1

(0)64(1)、59(2)54(3)、49(4)44

この作業をすることができ失敗するまでに4日遅れることがあります。

これは、出力が

を入力してくださいマークすることになっているものです:ディスプレイ日の64

を入力してください数:10

スキーム1

(0)64(1)59(2)54(3)49(4)44(5)39(6)34(7)29(8)24

この作業は、失敗するまでに最長で4日ほどかかる可能性があります。

遅れてペナルティーを計算する(マーク-5)私はまた、不合格に失敗するのに必要な日数を表示する必要があります(失敗するまでの日数ユーザが入力した日数(d)よりも長い)。表示日の64

を入力してください番号:2

スキーム1

失敗マーク

を入力してくださいマーク40未満

2例(出力)であります

(0)64(1)59(2)54

Th仕事は失敗するまでに4日遅れる可能性があります。

私のコードはほぼ完成していますが、この問題は私を遅くしています。

P.S.私はここのjava

で新しいです私の完全なプログラムです

LatePenaltiesは、私はときfalingマーク示さなければならない

import java.util.Scanner; 

public class LatePenaltiesUser { 

    public static void main(String [] args) { 
    // local variables 
    Scanner input = new Scanner(System.in); 
    LatePenalties latePen; 
    int mark; 
    int days; 

    // input  
    do{ 
    System.out.print("Please input mark (between 0 and 100) --> "); 
    mark = input.nextInt(); 
    if ((mark < 0) | (mark > 100)){System.out.print("\n" + "Input value outside the range!!!" + "\n");} 
    }while((mark < 0) | (mark > 100)); 

    do{ 
    System.out.print("Please input number of days to display (between 0 and 20) --> "); 
    days = input.nextInt(); 
    System.out.print("\n"); 
    if ((days < 0) | (days > 20)){System.out.print("Input value outside the range!!!"+ "\n");} 
    }while((days < 0) | (days > 20)); 

    // computation 
    latePen = new LatePenalties(mark); 
    latePen.scheme1(days); 
    latePen.scheme2(days); 

    } 
} 

メインクラス

public class LatePenalties { 

    // attributes 
    private int mark; 

    private static final int constantDiffSch1 = -5; 
    private static final double constantDiffSch2 = 0.9; 
    private static final int START_CONDITION = 0; 
    // constructors 
    public LatePenalties(int m) { 
     mark = m; 

    } 

    // methods 

public void scheme1(int d) { 

     // first modification 
     if (mark<=20){ 
       System.out.print("\nBecause mark under 20 mark stays as its original value. mark="+mark); 
       return; 
     } 
     int total = mark; 
     int finalMark=20; 

     System.out.print("Scheme 1"+"\n"); 

    // Loop 
     for(int loopParameter = START_CONDITION; 
     loopParameter <= d;loopParameter++){ 
      System.out.print("(" + loopParameter + ") " + total + " "); 
     total = total + constantDiffSch1; 

      // second modification 

     if (total < 40){ 
      System.out.print("\nThis work can be up to " + loopParameter); 
      return; 
      } 

      // third modification 
      if (total<=20){ 
      System.out.print("\nBecause mark drops below 20, mark stays as 20. final mark="+ finalMark); 
      return; 
      } 
    } // End 
    System.out.print("\n\n"); 
} 


public void scheme2(int d) { 
     double total = mark; 

     System.out.print("\n\nScheme 2"+"\n"); 

    // Loop 
     for(int loopParameter = START_CONDITION; 
     loopParameter <= d;loopParameter++){ 
      System.out.print("(" + loopParameter + ") "); 
      System.out.printf("%.02f",total); 
      System.out.print(" "); 

     total = total * constantDiffSch2; 
    } // End 
    System.out.print("\n"); 
} 
}   

をcalss (40未満で)発生するが、私は私はそれが期待されるものの例に示しているように、20日にループを止めるか、または日数に達したときに終わります。

+0

基本的には、各ループ反復でグレードの値を減らしたいと思っていますが、グレードが40を下回ってループを停止するのは正しいですか? – molig

+0

私はfaling markが(40未満で)出現するときに表示する必要がありますが、20で停止するか、または日数を完了する必要があります。 –

答えて

1

あなたは(0から100の間)を入力してくださいマーク

​​

次のようにあなたの scheme1方法を更新することができ、すぐに totalが40未満であるように、ループの外に来て breakを使用することができます - - > 82 表示する日数を入力してください(0〜20) - > 10

スキーム1(0)82(1)77(2)72(3)67(4)62(5) 57(6)52 (7)47(8)42 この作品は、最悪の場合は8日前まで。

+0

私はfaling markが(40未満で)出現したときに表示する必要がありますが、20で停止するか、または日数を完了する必要があります。 @iNan –

0

日数を計算するためにloopParameterを知る必要はありません。あなたはそのようにそれを計算することができます。

int days = (d - 40)/-constantDiffSch1; 

あなたがループを終了したいときは、breakを使用することができます。したがって:

if (total < 20) break; 

そのようなloopParameterに電話しないでください。 iまたはdayのように1つの記号(または短い単語)で呼び出すことをお勧めします。コードを読みやすく理解しやすくします。

関連する問題