-
NullPointerException
I'm trying to make a program. I'm using a while loop to keep asking for a name and when "done" is entered it exits the loop. It stores the names in an array and prints it out as you enter it. I cant get it to exit the loop.
This is the Source Code:
Code:
import java.util.*;
public class TimeCard {
public static void main(String sArgs[]){
Scanner oScan = new Scanner(System.in);
String[] aStudentNames = new String[150];
final String[] sDone = {"done"};
int iA = 0;
while(aStudentNames[iA].compareToIgnoreCase(sDone[0]) > 0 || aStudentNames[iA].compareToIgnoreCase(sDone[0]) < 0){
System.out.println("What is your name?");
aStudentNames[iA] = oScan.nextLine();
System.out.println(aStudentNames[iA]);
++iA;
}
}
}
-
Code:
while(aStudentNames[iA].compareToIgnoreCase(sDone[0]) > 0 || aStudentNames[iA].compareToIgnoreCase(sDone[0]) < 0)
its shorter to write Code:
while(!aStudentNames[iA].equalsIgnoreCase("done"))
(an array with only one string makes no sense in my opinion)
So your problem is, that you access aStudentNames[iA] before you store the name on that array position. use maybe a do-while-loop instead of a normal while-loop.
Maybe:
Code:
Scanner oScan = new Scanner(System.in);
String[] aStudentNames = new String[150];
int iA = 0;
do {
System.out.println("What is your name?");
aStudentNames[iA] = oScan.nextLine();
System.out.println(aStudentNames[iA]);
} while (!aStudentNames[iA++].equalsIgnoreCase("done"));
but you store "done" in your array too, dont know if you really want this :)
Code:
Scanner oScan = new Scanner(System.in);
String[] aStudentNames = new String[150];
int iA = 0;
while(iA<149){
System.out.println("What is your name?");
String s = oScan.nextLine();
if("done".equalsIgnoreCase(s)){
break;
}
aStudentNames[iA] =s;
System.out.println(aStudentNames[iA++]);
}
-
-