#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)");
Думаю, пища для размышлений.