2014-08-29 3 views
0

Я пишу код, который считывает следующие входныеСканер nextLine выпуск

3 
Ruby 
Diamond 
Sapphire 

Вот моя программа

import java.util.Scanner; 

public class GemStones { 

    private int numOfStones; 
    private String[] gemArray; 

    public void solve() throws Exception{ 

     Scanner in = new Scanner(System.in); 

     //Reading the integer 
     numOfStones = Integer.parseInt(in.nextLine()); 
     //in.nextLine(); 
     System.out.println(numOfStones); 


     //reading the strings 
     for(int i=0;i<numOfStones;i++){ 
      gemArray[i] = in.nextLine(); 
      System.out.println(gemArray[i]); 
     } 


     for(int i=0;i<numOfStones;i++){ 
      System.out.println(gemArray[i]); 
     } 
     in.close(); 
    } 


    public static void main(String[] args) throws Exception { 
     GemStones check = new GemStones(); 
     check.solve(); 


    } 

} 

У меня есть проблема, читая строки после него. Всякий раз, когда я пытаюсь прочитать строки, это показывает мне ошибку! пожалуйста, помогите мне ..

Ниже будет ошибка, я получаю в консоли

3 
Ruby 
Diamond 
Sapphire3Exception in thread "main" 
java.lang.NullPointerException 
    at com.sudarabisheck.easy.GemStones.solve(GemStones.java:23) 
    at com.sudarabisheck.easy.GemStones.main(GemStones.java:37) 
+2

Какую ошибку она покажет вам? – MadProgrammer

+5

@MadProgrammer Я принимаю NullPointerException. Он никогда не присваивает 'gemArray' –

+0

@ Smith_61 - bingo !!! – TheLostMind

ответ

1

Вы должны инициализировать массив как,

gemArray = new String[numOfStones]; 
1

Основная проблема, как только вы прочтете количество камней, которые будут введены, вы никогда не инициализацию gemArray перед вы используете его ...

numOfStones = Integer.parseInt(in.nextLine()); 
//in.nextLine(); 
System.out.println(numOfStones); 

//reading the strings 
for (int i = 0; i < numOfStones; i++) { 
    gemArray[i] = in.nextLine(); 
    System.out.println(gemArray[i]); 
} 

вы должны использовать значение numOfStones инициализацию gemArray

numOfStones = Integer.parseInt(in.nextLine()); 
//in.nextLine(); 
System.out.println(numOfStones); 

// Intialise gemStones here... 
gemStones = new String[numOfStones]; 

//reading the strings 
for (int i = 0; i < numOfStones; i++) { 
    gemArray[i] = in.nextLine(); 
    System.out.println(gemArray[i]); 
} 
1

Вы никогда не inizialize массив gmeArray так добавить инициализацию:

public void solve() throws Exception{ 

      Scanner in = new Scanner(System.in); 

      //Reading the integer 
      numOfStones = Integer.parseInt(in.nextLine()); 
      //in.nextLine(); 
      System.out.println(numOfStones); 

      gemArray = new String[numOfStones]; 
      //reading the strings 
      for(int i=0;i<numOfStones;i++){ 
       gemArray[i] = in.nextLine(); 
       System.out.println(gemArray[i]); 
      } 


      for(int i=0;i<numOfStones;i++){ 
       System.out.println(gemArray[i]); 
      } 
      in.close(); 
     } 
Смежные вопросы