2017-09-07 2 views
-3

Je suis en train d'écrire un mehod java pour convertir un tableau de chars[][], appartenant chacun à un int array[], à un array de int:java mehod pour convertir un tableau de caractères [] [] à un tableau de int

public static int charArrayToInt (char[][] Grades, int[] studentList) { 
    int[][] studentGradesInt = new int[10][];  //create a new array to convert char 'grades to int 'grades' 

    for (int Students : studentList) {    //for every student 
     for (int i=0; i<Grades.length-1; i++) { // for every ref to grade (array) 
      switch (Grades[i]) {     //convert grade in reference to appropriate value in new array 
       case 'A': studentGradesInt[i] = '4'; 
       case 'B': studentGradesInt[i] = '3'; 
       case 'C': studentGradesInt[i] = '2'; 
      } 
     } 
    } 
} 

Je pense que je vais avoir un pointeur vers la référence de chacun des Grades[] mais compilateur lancers francs « char[] ne peut pas être converti en int » sur la déclaration switch.

Si elle aide, ma principale est:

public static void main(String[] args) { 
    int[] studentIdList = new int[] {1001,1002,1003}; 
    char[][] studentsGrades = new char[][] { { 'A', 'A', 'A', 'B' }, { 'A', 'B', 'B' } , { 'A', 'B', 'C' , 'D' }}; 
    charArrayToInt(studentsGrades,studentIdList); 
    System.out.println("grade_test: "+studentsGrades[2][2]); 
    System.out.println("grade_test: "+studentGradesInt[2][2]); 
} 
+0

'Grades' est un char [] [], donc' Grades [i] 'vous donner un' char [] ', vous voulez activer' Grades [numStudent] [i] 'pour obtenir un' char' . Et vous savez que "4" n'est pas un int de valeur 4 mais 52, voir [ASCII TABLE] (http://www.asciitable.com/).? – AxelH

Répondre

0

Vous utilisez un char[][] Grades, donc Grades[i] vous donner un char[], pour obtenir char spécifique, vous devez spécifier le deuxième indice de niveau trop: Grades[numStudent][i].

Une mise en œuvre générale de lire un tableau 2D est la suivante:

for(int i = 0; i < Grades.length; ++i){ //for each row 
    for(int j = 0; j < Grades[i].length; ++j){ //for each column IN THE CURRENT ROW 
     switch(Grades[i][j]){ 
     //... 
     } 
    } 
} 

Remarque: Vous utilisez un char comme '4' au lieu de la valeur numérique 4, ce sont différents, l'un est en fait 52, voir un ASCII TABLE

Note 2: votre étudiant va être fou de recevoir toutes les notes 'C'. Vous devriez break; chaque fois que vous avez terminé, sinon, le cas suivant sera exécuté.