2012-11-29 4 views
0

나는 약간의 도움이 필요한 배열 프로젝트를 가지고있다. 나는 그것의 대부분을 끝내었다. 그러나 나는 끝쪽으로 두개의 문제로 달렸다. 나는 학생 이름, 성적을 넣을 수 있고 성적을 (이름과 함께) 정렬하고 내림차순으로 인쇄 할 수 있습니다. 그래도 Doubles로 설정된 성적이 필요하며, 현재 Ints로 붙어 있습니다. Int의 인스턴스를 Double로 변경하려고 시도했지만 불일치 오류가 발생합니다. 또한 처음에 배열의 크기를 입력하도록 설정했지만 "학생 수"를 두 번 묻습니다. 어떻게 수정해야하나요? 한 번만 물어 보거나 두 답을 모두 하나씩 입력하십시오. 여기에 코드가 있습니다.배열 프로젝트 int double mismatch

import java.util.Scanner; 

public class Grades { 

    public static void main(String[]args){ 

     { 
      Scanner GradeIn = new Scanner(System.in); 
      Scanner NameIn = new Scanner(System.in); 
      System.out.print("How many students are there? "); 
      int[]GradeArray = new int[GradeIn.nextInt()]; 
      String[]nameArray = new String[GradeIn.nextInt()]; 

      for(int i=0 ; i<GradeArray.length ; i++) 
      { 
       System.out.println("Enter Grade for Student " + (i+1) + ": "); 
       GradeArray[i] = GradeIn.nextInt(); 
       System.out.println("Enter Name of Student " + (i+1) + ": "); 
       nameArray[i] = NameIn.nextLine(); 
      } 

      bubbleSort(GradeArray, nameArray); 


      for (int i = 0; i<GradeArray.length; i++) 
      { 
       System.out.print(nameArray[i]); 
       System.out.print(": "); 
       System.out.print(GradeArray[i] + " "); 

      } 
     } 
    } 

    private static void bubbleSort(int[]GradeArray, String[] nameArray){ 

     int n = GradeArray.length; 
     int temp = 0; 
     String temp2; 

     for(int i=0; i<n; i++){ 
      for(int j=1; j<(n-i);j++){ 

       if(GradeArray[j-1]<GradeArray[j]){ 
        //swap 
        temp=GradeArray[j-1]; 
        GradeArray[j-1]=GradeArray[j]; 
        GradeArray[j]=temp; 

        temp2=nameArray[j-1]; 
        nameArray[j-1]=nameArray[j]; 
        nameArray[j]=temp2; 


       } 
      } 
     } 
    } 
} 

어떤 도움을 주시면 감사하겠습니다.

+0

는 각 학생 등을 위해 이름과 학년을 저장하는 2 차원 배열을 가질 가능성이 있습니까 입력 한 다음 정렬할까요? 왜 어떤 데이터 형식을 저장할 수 있도록 변형 배열을 정의하지 마십시오 ... – bonCodigo

+0

그는 우리에게 2 개의 배열이 필요합니다. 이름 하나, 성적 용 하나. – user1861544

+0

시작하는 학생 수를 입력하는 대신 입력을 처리 할 때 'q'또는 '종료'를 확인하는 것이 일반적이므로 'quit'을 입력하기 전까지 학생 입력을 시작할 수 있습니다. – Dukeling

답변

0

내가 볼 수있는 지금까지, 다음 줄을 교체해야합니다 :

int[]GradeArray = new int[GradeIn.nextInt()]; 
GradeArray[i] = GradeIn.nextInt(); 
private static void bubbleSort(int[]GradeArray, String[] nameArray){ 

와 함께 : 그 교체 후 작동하지 않는 경우

double[]GradeArray = new double[GradeIn.nextInt()]; 
GradeArray[i] = GradeIn.nextDouble(); 
private static void bubbleSort(double[]GradeArray, String[] nameArray){ 

것은,이 게시 도움이 될 수 있습니다 어떻게 바꿔 놨어.

int[]GradeArray = new int[GradeIn.nextInt()]; 
String[]nameArray = new String[GradeIn.nextInt()]; 

에 : 학생의 수를 두 번 문제, 변경 요구를 들어

int count = GradeIn.nextInt(); 
int[]GradeArray = new int[count]; 
String[]nameArray = new String[count];