2016-10-15 4 views
-1

を返さない私のコードです:最後に私のreturn文は、ここ

Scanner x = new Scanner(System.in); 
System.out.println("n1"); 
String ni = x.next(); 
System.out.println("His time in s"); 
int s1 = x.nextInt(); 
System.out.println("n2"); 
String nii = x.next(); 
System.out.println("His time in s"); 
int s2 = x.nextInt(); 
System.out.println("n3"); 
String niii = x.next(); 
System.out.println("His time in s"); 
int s3 = x.nextInt(); 

Run gogo = new Run(s1, s2, s3, ni, nii, niii); 

System.out.println(gogo.getres()); 

package work; 

public class Run { 

    private int sec; 
    private int sec2; 
    private int sec3; 
    private double min; 
    private double min2; 
    private double min3; 
    private String n1; 
    private String n2; 
    private String n3; 


    public Run(int s, int ss, int sss, String n, String nn, String nnn){ 
     sec = s; 
     sec2 = ss; 
     sec3 = sss; 
     n1 = n; 
     n2 = nn; 
     n3 = nnn; 
     calcMin(); 
    } 


    public void calcMin(){ 
     min = (double) sec/60; 
     min2 = (double) sec2/60; 
     min3 = (double) sec3/60; 
    } 



    public String getres(){ 
     String res = ""; 
     if(min>min2 && min>min3 && min2>min3){ 
      res = n1+n2+n3; 
     } 
     else if (min>min2 && min>min3 && min2<min3){ 
      res = n1+n3+n2; 
     } 
     else if (min2>min && min2>min3 && min>min3){ 

      res = n2+n1+n3; 
     } 
     return res; 
    } 




} 

MAIN

CLASS、それは空白だ、何も表示されません。 問題は、レースの数分で結果を尋ねます。 競争の場合と同様に、最低時間のものが最初に等しくなければなりません。 次に、時間に応じて第1、第2、第3の名前を表示する必要があります。

問題は主人が質問した後に何も表示されないことです。 先進的な人が配列リストを使用することは知っていますが、許可されていません。 if-else-ifステートメントは、まだ動作しないので、すべて入れなかった。 私を助けてください。

+0

あなたのretrun statmentsが返されないと言ったのですか?しかし、あなたはそれが空の文字列を返していないと確信していますか? –

+0

私はその文字列を置くres = n1 + n2 + n3;その順序でそれらの文字列を返すか、各ステートメントの特定の順序を返します。 – Bog

+0

"if"と "else if"文を使用すると、これらの条件文のいずれも真の結果を持たないかもしれません。最後に "else"文を追加して答えを確認することができます。 like: else res = "hi"; –

答えて

0

はい、あなたの IF文の条件内のロジックは間違いなく入力されたレース倍のまず第二、およびサード位の受賞者を維持するために微調整する必要があります。

しかし、これを見ることができる別の方法は、各レーサーの計算された時間の値をすべて取得し、昇順に並べ替えることです。ここでのトリックは、各レーサーの名前がソートされているので、それぞれの時間値に従うことです。あなたは実際にあなたのIFELSE/IFステートメントを使用しています。ここに別の方法があります。 3人のレーサーしかないので、IFステートメントコードブロック(1つはdoubleの変数と1つのの文字列の変数内の2つの一時変数を宣言して使用することで簡単に達成できます。ここで

は一例です:私は推測思考のための

// Sort race times and racer names 
// to follow their race time... 
if (min > min2) { 
    double tmpVal = min; 
    String tmp = n1; 
    min = min2; n1 = n2; 
    min2 = tmpVal; n2 = tmp; 
} 

if (min2 > min3) { 
    double tmpVal = min2; 
    String tmp = n2; 
    min2 = min3; n2 = n3; 
    min3 = tmpVal; n3 = tmp; 
} 

if (min > min2) { 
    double tmpVal = min; 
    String tmp = n1; 
    min = min2; n1 = n2; 
    min2 = tmpVal; n2 = tmp; 
} 

// Display Race Results in console... 
System.out.println("The race winners are:"); 
System.out.println("First Place:\t" + n1 + "\t(in " + min + " minutes)"); 
System.out.println("Second Place:\t" + n2 + "\t(in " + min2 + " minutes)"); 
System.out.println("Third Place:\t" + n3 + "\t(in " + min3 + " minutes)"); 

食品。