2016-10-15 5 views
0

Я уже пишу кодировку, чтобы принять noSem и noCourse от пользователей. В каждом семестре будет другой noCourse. Моя проблема заключается в том, что я могу отображать данные, если пользователи вводят одинаковое значение noCourse. Я хочу, чтобы он отличался от семестра.Java Array Loop для отображения различных noCourse

Вот какой-то выход: I seems the loop is working, but the data is null because cant access the specific course between semester

Вот некоторые из моих кодирования:

class studentCourse { 

int noCourse, noSem; 

void course() { 

    BufferedReader inData = new BufferedReader(new InputStreamReader(System.in)); 

    try { 

     System.out.print("Enter no of semester : "); 
     noSem = Integer.parseInt(inData.readLine()); 

     String[][] sbjName = new String[noSem][]; 
     String[][] courseCode = new String[noSem][]; 
     int[][] CHour = new int[noSem][]; 
     int[][] Marks = new int[noSem][]; 

     // Semester loop 
     for(int i = 0; i < noSem; i++) { 

      System.out.println("\n\tSemester" + (i + 1)); 
      System.out.print("Enter number of course : "); 
      noCourse = Integer.parseInt(inData.readLine()); 

      sbjName[i] = new String[noCourse]; 
      courseCode[i] = new String[noCourse]; 
      CHour[i] = new int[noCourse]; 
      Marks[i] = new int[noCourse]; 

      // course details loop 
      for(int u = 0; u < noCourse; u++) { 

       System.out.print("Enter Course Code : "); 
       courseCode[i][u] = inData.readLine(); 

       System.out.print("Enter Course Name : "); 
       sbjName[i][u] = inData.readLine(); 

       System.out.print("Enter Credit Hour : "); 
       CHour[i][u] = Integer.parseInt(inData.readLine()); 

       System.out.print("Enter Marks : "); 
       Marks[i][u] = Integer.parseInt(inData.readLine()); 

       System.out.println("\n"); 
      } 
     } 
     for(int row = 0; row < noSem; row++) { 

     System.out.println("\nResult Semester " + (row + 1)); 
     System.out.println("Course Code\t Course Name\t Credit Hour\t Marks\n"); 
     courseCode[row] = new String[noCourse]; 

      for(int col = 0; col < noCourse; col++) { 

       // display course code 
       System.out.print("Value row = " + row); 
       System.out.print("Value of col = " + col); 
       System.out.print(courseCode[row][col] + "\t");      
       System.out.print("\n"); 


      } 
      /* 

       // display subject name 
       for(int x = 0; x < 1; x++) { 
        for(int y = 0; y < sbjName[x].length; y++) { 
         System.out.print(sbjName[x][y] + "\t"); 

        } 

       } 

       // display credit hour 
       for(int x = 0; x < CHour.length; x++) { 
        for(int y = 0; y < CHour[x].length; y++) { 
         System.out.print(CHour[x][y] + "\t"); 
        } 
       } 

       // display marks 
       for(int x = 0; x < Marks.length; x++) { 
        for(int y = 0; y < Marks[x].length; y++) { 
         System.out.print(Marks[x][y]); 
        } 
       } */ 
      } 
    } 
    catch (ArrayIndexOutOfBoundsException Aobj) { 
     System.out.println("Could not access the index!"); 
    } 

    catch (Exception Eobj) {} 
} 
} 
+0

проблема в сторону, вы должны назвали noCourse, как CourseNo – Gaur93

ответ

0
  1. Вы повторно инициализирован courseCode перед отображением результатов от него. Удалить эту строку кода

    курсCode [строка] = новый String [noCourse];

перед отображением результатов, и все будет хорошо работать.

  1. Переменная noCourse может отличаться для каждого из семестров. Это означает использование переменной для получения ваших результатов с ошибкой. Вместо этого используйте длину любого из массивов, например. courseCode принести свой результат:
for(int row = 0; row < courseCode.length; row++) { 
    System.out.println("\nResult Semester " + (row + 1)); 
    System.out.println("Course Code\t Course Name\t Credit Hour\t Marks\n");  
    for(int col = 0; col < courseCode[row].length; col++) { 
     System.out.print(courseCode[row][col] + "\t"); 
     System.out.print(sbjName[row][col] + "\t"); 
     System.out.print(CHour[row][col] + "\t"); 
     System.out.print(Marks[row][col] + "\t");      
     System.out.print("\n"); 
    } 
} 
+0

я уже пробовал это раньше. Он просто отображает вывод, если пользователь вводит одно значение для noCourse. Я получаю ArrayIndexOutOfBounds, я использую это. –

+0

Я проверил код, и он отлично работает после удаления этой строки кода. http://prntscr.com/cu6udy – Olantobi

+0

Попробуйте ввести другой noCourse. Пример, семестр 1 noCourse = 2, Semester 2 noCourse = 3. –