2016-05-05 352 views
1

我正在编写一门需要教师班级大小的代码,然后创建一个包含姓名和成绩的数组。这个想法是让代码按他们的分数排序(不是他们的名字)。我的问题是,我似乎无法使得数据的分数部分增加一倍。基本上,代码只需要int输入。取得学生姓名和成绩并按顺序排列的代码

我希望代码在完成后执行此操作。

你班上有多少学生? 6

  1. 名称:汤姆·史密斯

    得分:82.5

  2. 名称:玛丽·史密斯

    得分:92.5

  3. 名称:爱丽丝瀑布

    得分: 61

  4. 名称:琳达·纽森

    得分:73

  5. 名称:杰克·特纳

    得分:89.3

  6. 名称:乔治·布朗

    得分:52

这是我到目前为止有:

import java.util.*; 
public class FinalJamesVincent { 
    public static void main(String[] args) { 
     Scanner input = new Scanner(System.in); 
     System.out.print("Enter the number of students: "); 
     int numofstudents = input.nextInt(); 
     String[] names = new String[numofstudents]; 
     double[] array = new double[numofstudents]; 
     for(int i = 0; i < numofstudents; i++) { 
      System.out.print("Name: "); 
      names[i] = input.next(); 
      System.out.print("Score: "); 
      array[i] = input.nextInt(); 
     } 
     selectionSort(names, array); 
     System.out.println(Arrays.toString(names)); 
    } 
    public static void selectionSort(String[] names, double[] array) { 
     for(int i = array.length - 1; i >= 1; i--) { 
      String temp; 
      double currentMax = array[0]; 
      int currentMaxIndex = 0; 
      for(int j = 1; j <= i; j++) { 
       if (currentMax > array[j]) { 
        currentMax = array[j]; 
        currentMaxIndex = j; 
       } 
      }  
       if (currentMaxIndex != i) { 
        temp = names[currentMaxIndex]; 
        names[currentMaxIndex] = names[i]; 
        names[i] = temp; 
        array[currentMaxIndex] = array[i]; 
        array[i] = currentMax; 
       } 
     }  
    } 
} 
+4

使用'nextDouble'而不是'nextInt'来获得'double'而不是'int'。 – resueman

+0

我明白你是否是初学者,但更好的方法是制作一个“学生”班。并将它们存储到可以分类的'Student []'中。 –

回答

3
array[i] = input.nextInt(); 

nextInt()解析输入到一个整数,采取double输入,你应该使用input.nextDouble()

将其替换为array[i] = input.nextDouble();这将使它完美。

+0

谢谢,我知道它一定很简单。 –