2016-04-17 2 views
-1

Это код, над которым я работал в классе. Я хотел бы спросить моего учителя, но сегодня воскресенье.Код на русском языке о сортировке чисел

ОК прямо с места в карьер, мне нужно отсортировать некоторые цифры и найти самое высокое число и самое низкое.

Так что работает, а что нет?

Код находит наибольшее число под переменной iMax. С настройкой новой переменной iMin и значком < (меньший знак) он должен указывать мне самое низкое число, но это не так, и это проблема. Вместо этого он говорит мне 0.0, и это не одно из многих случайных чисел, которые я мог бы выбрать. Проще говоря, цифры 1000,2000,3000,4000,5000. это говорит мне, что 5000 - это самое высокое число, а 0.0 - самое низкое. 0.0 не был одним из моих номеров, и я слишком долго поцарапал себе голову, пожалуйста, помогите мне с этой проблемой, поскольку она подталкивает меня к стене. Так вот код:

import java.util.Scanner; 
public class JustWork { 

    public static void main(String[] args) { 
     double [] run1 = new double[7]; 
     double iMax = run1[0]; 
     double iMin = run1[0]; 

     Scanner input = new Scanner(System.in); 

     for (int i = 0; i<run1.length; i++) 
     { 
      System.out.println("Score from Judge " + (i+1) + ": "); 
      run1[i] = input.nextDouble(); 
     } 

     for (int i = 1; i<run1.length; i++) 
     { if (run1[i]< iMin) 
      iMin = run1[i]; 
     } 

     for (int i = 1; i<run1.length; i++) 
     { if (run1[i]> iMax) 
      iMax = run1[i]; 
     } 


     System.out.println("the minimum score is: " + iMin); 

     System.out.println("the maximum score is: " + iMax); 
    } 
} 

Например, если я кладу в следующих номеров: 3,4,5,6,7,8,9 System.out.prints из этого:

Score from Judge 1: 
3 
Score from Judge 2: 
4 
Score from Judge 3: 
5 
Score from Judge 4: 
6 
Score from Judge 5: 
7 
Score from Judge 6: 
8 
Score from Judge 7: 
9 
the minimum score is: 0.0 
the maximum score is: 9.0 

ответ

3

При инициализации двойного массива, они по умолчанию назначено 0s для каждого element.Then при назначении run1[0] to iMin and iMax, вы уже установить 0, как мин неявно. Для avaoid что, просто присвоить начальные значения после получения входного

public static void main(String[] args) { 
    double [] run1 = new double[7]; 
    Scanner input = new Scanner(System.in); 

    for (int i = 0; i<run1.length; i++) 
    { 
     System.out.println("Score from Judge " + (i+1) + ": "); 
     run1[i] = input.nextDouble(); 
    } 

    double iMax = run1[0]; 
    double iMin = run1[0]; 
    for (int i = 1; i<run1.length; i++) 
    { if (run1[i]< iMin) 
     iMin = run1[i]; 
    } 

    for (int i = 1; i<run1.length; i++) 
    { if (run1[i]> iMax) 
     iMax = run1[i]; 
    } 
    System.out.println("the minimum score is: " + iMin); 
    System.out.println("the maximum score is: " + iMax); 
} 
2

Инициализировать iMin и iMaxпосле ваш первый for цикл. Когда вы инициализируете ранее, значения равны 0.

double [] run1 = new double[7]; // <-- an array of 7 elements, all 0.0 
// double iMax = run1[0];  // <-- 0.0 
// double iMin = run1[0];  // <-- 0.0 
Scanner input = new Scanner(System.in); 
for (int i = 0; i < run1.length; i++) 
{ 
    System.out.println("Score from Judge " + (i+1) + ": "); 
    run1[i] = input.nextDouble(); 
}  
double iMax = run1[0]; 
double iMin = run1[0]; 
+0

несмотря на то, что я могу только принять один ответ, я хотел бы поблагодарить Вас за ответы, а также. спасибо – Steve

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