2017-02-04 11 views
0

Я абсолютный новичок. Я знаю, как найти max с «if», но я хотел сделать это с помощью метода. Проблема в том, как я могу сохранить запись последнего Max!Как написать метод JAVA для поиска Максимального количества пользователей?

public class Max 
{ 

    public static double Max (double score){ 
     double max = 0; 
     if (score > max) 
      max = score; 
     return max; 
    } 

    public static void main (String [] arg){ 
     Scanner scan = new Scanner (System.in); 
     double score = 0; 

     do{ 
      System.out.print("Enter the scores (-1 to end input) > "); 
      score = scan.nextDouble(); 

     }while (score >= 0); 

     System.out.println("Highest score: " + Max(score)); 
    } 
} 
+0

Не забудьте отметить мой ответ, как принято – Developer

ответ

2

Вы можете сделать следующее, но изменить ваш метод немного:

public static double Max (double score, double max){ 
    if (score > max) 
     max = score; 
    return max; 
} 

public static void main (String [] arg){ 
    Scanner scan = new Scanner (System.in); 
    double score = 0; 
    double max = 0; 

    do{ 
     System.out.print("Enter the scores (-1 to end input) > "); 
     score = scan.nextDouble(); 
     max = Max(score, max); 

    }while (score >= 0); 

    System.out.println("Highest score: " + Max(score)); 
} 

В основном ваша функция возвращает Макс из двух аргументов. Он будет продолжать сравнивать текущий максимум с входом и устанавливать большее число в качестве переменной max. Вам понадобится переменная держатель (в моем примере это сделано в double max = 0; независимо от используемого подхода.

0

Вы можете попробовать это.

public class Max { 

    public static double max(List<Double> score) { 
     double max = 0; 

     for (int i = 0; i < score.size(); i++) { 
      if (score.get(i) > max) { 
       max = score.get(i); 
      } 
     } 

     return max; 
    } 

    public static void main(String[] arg) { 
     Scanner scan = new Scanner(System.in); 
     List<Double> scores = new ArrayList<>(); 

     Double score; 
     do { 
      System.out.print("Enter the scores (-1 to end input) > "); 
      score = scan.nextDouble(); 
      scores.add(score); 
     } while (score >= 0); 

     System.out.println("Highest score: " + max(scores)); 
    } 
} 
0

Вы должны сохранить входные значения в List. Тогда передать List объект в качестве входного параметра MAX метода.

public static double max(List<Double> score) { 
    double max = 0; 

    for (int i = 0; i < score.size(); i++) { 
     if (score.get(i) > max) { 
      max = score.get(i); 
     } 
    } 

    return max; 
} 

public static void main(String[] arg) { 
    Scanner scan = new Scanner(System.in); 
    List<Double> scores = new ArrayList<>(); 

    Double score; 
    do { 
     System.out.print("Enter the scores (-1 to end input) > "); 
     score = scan.nextDouble(); 
     scores.add(score); 
    } while (score >= 0); 

    System.out.println("Highest score: " + max(scores)); 
} 
0

Помимо идей, выдвинутых, быть осторожным, если значение меньше 0, то сравнивает его или добавляет его в список, когда его не должно быть так, например, если, например, желательно найти ребенка, он потерпит неудачу. В дополнение к поиску большего или меньшего можно прибегнуть к потокам. Max()

public static double Max (List<Double> scores){ 
    return scores.stream().mapToDouble(i -> i).max().getAsDouble(); 
} 
public static void main(String[] args) { 
    Scanner t = new Scanner(System.in); 
    List<Double> scores = new ArrayList<>(); 
    double value=0; 
    while(true){ 
     value = t.nextDouble(); 
     if(value<=0) break; 
     else scores.add(value); 
    } 
    System.out.println(Max(scores)); 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^