Java 继续获取空指针异常错误?我的逻辑几乎是准确的
为什么当我输入1或2激活开关时,情况1或2我有一个空指针异常错误??我真的需要有人能解释我的问题。我相信我的开关箱没有问题。我错过了什么Java 继续获取空指针异常错误?我的逻辑几乎是准确的,java,class,exception-handling,nullpointerexception,try-catch,Java,Class,Exception Handling,Nullpointerexception,Try Catch,为什么当我输入1或2激活开关时,情况1或2我有一个空指针异常错误??我真的需要有人能解释我的问题。我相信我的开关箱没有问题。我错过了什么 package dakilangtaoako; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.logging.Level; import java.u
package dakilangtaoako;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.logging.Level;
import java.util.logging.Logger;
public class DakilangTaoAko {
public static void main(String[] args){
BufferedReader dataIn = new BufferedReader(new InputStreamReader( System.in) );
String mydata[][] = new String[5][3] ;
String inttoword [] = new String [5];
int wordtoint[] = new int [5];
int mychoice = 0;
String toreturn = "";
for (int outside = 0; outside < 5; outside++){
System.out.println("Entry no." + (outside + 1));
for (int inside = 0; inside < 3; inside++){
if(inside == 0){
try {
System.out.print("Name: ");
mydata[outside][inside]= dataIn.readLine();
} catch (IOException ex) {
Logger.getLogger(DakilangTaoAko.class.getName()).log(Level.parse("OK"), null, ex);
}
}
else if(inside == 1){
try {
System.out.print("ID: ");
mydata[outside][inside]= dataIn.readLine();
} catch (IOException ex) {
Logger.getLogger(DakilangTaoAko.class.getName()).log(Level.parse("OK"), null, ex);
}
}
else if(inside ==2){
try {
System.out.print("Subject: ");
mydata[outside][inside]= dataIn.readLine();
} catch (IOException ex) {
Logger.getLogger(DakilangTaoAko.class.getName()).log(Level.parse("OK"), null, ex);
}
}
}
}
for(int outside= 0; outside <5; outside++){
for(int inside = 1; inside <= 3; inside++){
if(inside ==0)
inttoword[outside]=(mydata[outside][inside])+";"+(mydata[outside][inside]);
}
}
for(int outside = 0; outside < 5; outside++){
for(int inside = 1; inside <= 3; inside++){
if(inside ==0)
wordtoint[outside]=Integer.parseInt(mydata[outside][inside]);
}
}
for(int i=0;i<5;i++){
wordtoint[i]=Integer.parseInt(mydata[i][1]);
}
while(mychoice != 5){
System.out.println("-------- DISPLAY OPTIONS --------");
System.out.println("\t [1] Display Entries Alphabetically ");
System.out.println("\t [2] Display Entries by Ascending ID number ");
System.out.println("\t [3] Display Students Enrolled in Prog2 ");
System.out.println("\t [4] Display Students Enrolled in CSO ");
System.out.println("\t [5] Exit ");
System.out.println();
System.out.print("\t Choice:");
try {
mychoice = Integer.parseInt(dataIn.readLine());
} catch (IOException ex) {
Logger.getLogger(DakilangTaoAko.class.getName()).log(Level.SEVERE, null, ex);
}
switch (mychoice){
case 1:
System.out.println("----Entries In Alphabetical Order----");
alphabetSorter(inttoword);
for(int limiter = 0; limiter < 5; limiter++)
System.out.println(inttoword[limiter]);
System.out.print("Press [r] to Return to Main Menu...");
try {
toreturn = dataIn.readLine();
} catch (IOException ex) {
Logger.getLogger(DakilangTaoAko.class.getName()).log(Level.SEVERE, null, ex);
}
if("r".equals(toreturn))
break;
case 2:
System.out.println(" ---- Entries by Ascending ID Number ----");
for(int outside = 0; outside < 5; outside++){
numSorter(wordtoint);
for(int inside = 0; inside < 5; inside++){
if(Integer.parseInt(mydata[inside][1])== wordtoint[outside])
System.out.println(wordtoint[outside] + ";" + mydata[inside][0]);
}
}
System.out.print("Press [r] to return to main Menu...");
try {
toreturn = dataIn.readLine();
} catch (IOException ex) {
Logger.getLogger(DakilangTaoAko.class.getName()).log(Level.SEVERE, null, ex);
}
if("r".equals(toreturn))
break;
case 3:
System.out.println(" ---- Students Enrolled in Prog2 ----");
String mustfind1 = "PROG2";
for(int outside = 0; outside < 5; outside++){
if(mydata[outside][2].equalsIgnoreCase(mustfind1)){
System.out.println(mydata[outside][0]+";"+mydata[outside][1]);
}
}System.out.print("Press [r] to Return to Main Menu...");
try {
toreturn = dataIn.readLine();
} catch (IOException ex) {
Logger.getLogger(DakilangTaoAko.class.getName()).log(Level.SEVERE, null, ex);
}
if("r".equals(toreturn))
break;
case 4:
System.out.println(" ---- Students Enrolled in CSO ---- ");
String mustfind2 = "CSO";
for(int outside = 0; outside < 5; outside++){
if(mydata[outside][2].equalsIgnoreCase(mustfind2))
System.out.println(mydata[outside][0]+";"+mydata[outside][1]);
}
System.out.print("Press [r] to Return to Main Menu...");
try {
toreturn = dataIn.readLine();
} catch (IOException ex) {
Logger.getLogger(DakilangTaoAko.class.getName()).log(Level.SEVERE, null, ex);
}
if("r".equals(toreturn))
break;
case 5:
mychoice = 5;
break;
default:
System.out.println("Sorry the Number is Not in the Choices!!");
System.out.print("Press [r] to Return to Main Menu...");
try {
toreturn = dataIn.readLine();
} catch (IOException ex) {
Logger.getLogger(DakilangTaoAko.class.getName()).log(Level.SEVERE, null, ex);
}
if("r".equals(toreturn))
break;
} }
}
public static void numSorter(int given[]){
int temp;
for(int outside = 0; outside < given.length-1; outside++)
{
for(int inside = outside+1 ; inside < given.length; inside++)
{
if(given[outside] > given[inside])
{
temp = given[outside];
given[outside]= given[inside];
given[inside]=temp;
}
}
}
}
public static void alphabetSorter(String given[]){
String temp;
for(int outside = 0; outside < given.length -1; outside++)
{
for(int inside = outside +1; inside < given.length; inside++)
{
if(given[outside].compareToIgnoreCase(given[inside])>0)
{
temp= given[outside];
given[outside]= given[inside];
given[inside]=temp;
}
}
}
}
}
大吉朗塔瓦科包装;
导入java.io.BufferedReader;
导入java.io.IOException;
导入java.io.InputStreamReader;
导入java.util.logging.Level;
导入java.util.logging.Logger;
公务舱大吉朗塔阿科{
公共静态void main(字符串[]args){
BufferedReader dataIn=新的BufferedReader(新的InputStreamReader(System.in));
字符串mydata[][]=新字符串[5][3];
字符串inttoword[]=新字符串[5];
int wordtoint[]=新的int[5];
int mychoice=0;
字符串toreturn=“”;
for(int-outside=0;outside<5;outside++){
系统输出打印项次(“条目号”+(外部+1));
用于(内部int=0;内部<3;内部++){
如果(内部==0){
试一试{
系统输出打印(“名称:”);
mydata[外部][内部]=dataIn.readLine();
}捕获(IOEX异常){
Logger.getLogger(DakilangTaoAko.class.getName()).log(Level.parse(“OK”),null,ex);
}
}
else if(内部==1){
试一试{
系统输出打印(“ID:”);
mydata[外部][内部]=dataIn.readLine();
}捕获(IOEX异常){
Logger.getLogger(DakilangTaoAko.class.getName()).log(Level.parse(“OK”),null,ex);
}
}
else if(内部==2){
试一试{
系统输出打印(“主题:”);
mydata[外部][内部]=dataIn.readLine();
}捕获(IOEX异常){
Logger.getLogger(DakilangTaoAko.class.getName()).log(Level.parse(“OK”),null,ex);
}
}
}
}
对于(int-outside=0;outside来说,这是因为您没有初始化数组inttoword。它的所有条目都为null,这将阻塞此语句:
if(给定[外部]).compareTignoreCase(给定[内部])>0)
您要求jdk执行以下操作:
if(null.compareToIgnoreCase(null)>0)
查看日志文件,因为您正在使用Logger或只是在开发时使用ex.printStackTrace()
。这是大量代码;请尝试缩小问题的范围。您可能对我编写的日志文件感兴趣。如果您没有缩小问题范围,人们往往不会提供很大帮助。“几乎准确”和“准确”的意思是相反的。线程“main”中的异常java.lang.NullPointerException位于dakilangtaoako.dakilangtaoako.alphabetSorter(dakilangtaoako.java:195)位于dakilangtaoako.dakilangtaoako.main(dakilangtaoako.java:91)Java结果:1当我输入1或2时,当代码要求显示选项时..我已经编辑了我的答案。这对你有帮助吗?我如何解决问题?我仍然有点困惑。。