Мой оператор возврата не возвращает

#java #if-statement #return

#java #if-statement #Возврат

Вопрос:

Вот мой код:

КЛАСС

 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 amp;amp; min>min3 amp;amp; min2>min3){
            res = n1 n2 n3;
        }
        else if (min>min2 amp;amp; min>min3 amp;amp; min2<min3){
            res = n1 n3 n2;
        }
        else if (min2>min amp;amp; min2>min3 amp;amp; min>min3){

            res = n2 n1 n3;
        }
        return res;
    }




}
 

Главная

 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());
 

В конце концов, он ничего не показывает, он пустой.
Проблема запрашивает результаты в минутах гонки.
Как и в соревновании, тот, у кого наименьшее время, Должен быть первым и т. Д..
Затем он должен показать имя первого, второго и третьего в соответствии с их временем.

Проблема в том, что после того, как main задает вопрос, он ничего не показывает. Я знаю, что продвинутые люди будут использовать список массивов, но мне это не разрешено. Я не помещал все операторы if-else-if, потому что это все равно не работает. Пожалуйста, помогите мне.

Комментарии:

1. вы сказали, что ваши statments retrun не возвращаются? но вы уверены, что он не возвращает пустую строку???

2. Я помещаю эту строку res = n1 n2 n3; так что он возвращает эти строки в таком порядке или в определенном порядке для каждого оператора.

3. вы используете операторы «if » и » else if «, возможно, ни один из этих условных операторов не имеет истинного результата, вы можете добавить один оператор «else» в конце и проверить ответ . например: else res = «привет»;

4. Хорошо, поэтому он возвращает else res=»hi»; Что означает, что условия не выполнены. Верно??

5. хорошо, я нашел ошибку, но не ошибку в моих кодах. На самом деле, когда я ставлю s3 ниже, чем s2, в результате он показывает мне 0.

Ответ №1:

Да, логика в условиях для ваших операторов IF определенно нуждается в настройке, чтобы сохранить победителей, занявших первое, второе и третье места по введенному времени гонки.

Другой способ, которым вы могли бы взглянуть на это, однако, состоит в том, чтобы взять все вычисленные значения времени для каждого гонщика и отсортировать их в порядке возрастания. Хитрость здесь заключается в том, чтобы имена для каждого гонщика следовали их соответствующим значениям времени по мере сортировки этих значений. На самом деле вы все равно делаете это со своими операторами IF и ELSE / IF. Вот другой способ. Поскольку существует только три гонщика, это можно легко выполнить, объявив и используя пару временных переменных в каждом блоке кода оператора IF (одна двойная переменная и одна строковая переменная).

Вот пример:

 // 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)");
 

Думаю, пища для размышлений.