使用.split方法和JOP.InputDialog Java处理空问题
这是一个uni项目的代码片段,我对java还比较陌生,所以请原谅任何糟糕的代码。限制之一是代码在退出/取消时不得有错误。所以我知道JOptionPane.showInputDialog上的cancel按钮返回null,但“parts=temp.split”部分似乎是出于我未知的原因阻止输入为null?当我清除parts=temp.split时,选择“取消”按钮时不会引发异常,但显然for循环不起作用。因此,我需要做的是在取消时不会产生异常或错误。如有任何帮助,将不胜感激!: **编辑**我们也被禁止使用catch、try或break while循环。必须使用true/false退出使用.split方法和JOP.InputDialog Java处理空问题,java,exception-handling,nullpointerexception,Java,Exception Handling,Nullpointerexception,这是一个uni项目的代码片段,我对java还比较陌生,所以请原谅任何糟糕的代码。限制之一是代码在退出/取消时不得有错误。所以我知道JOptionPane.showInputDialog上的cancel按钮返回null,但“parts=temp.split”部分似乎是出于我未知的原因阻止输入为null?当我清除parts=temp.split时,选择“取消”按钮时不会引发异常,但显然for循环不起作用。因此,我需要做的是在取消时不会产生异常或错误。如有任何帮助,将不胜感激!: **编辑**我们也被
while (X == true && flag == true) {
input = JOptionPane.showInputDialog("Tell me more about " + topics[z]);
String temp = input;
if (input != null) {
flag = true;
}
else if (input == null) {
flag = false;
}
parts = temp.split(" ");
for (int i = 0; i < parts.length; i++) {
for (int x = 0; x < topics.length; x++) {
if (parts[i].equals(topics[x])) {
cut = parts[i];
break;
}
}
}
for (int i = 0; i < topics.length; i++) {
if (cut.equals(topics[i])) {
z = i;
break;
}
}
input = cut;
System.out.print(cut);
System.out.println(z);
X = Arrays.asList(topics[z]).contains(input);
System.out.println(X);
}
您需要编写parts=temp.split;内部if输入!=null,并确保在此之前已初始化部件;否则,您将在parts.length中获得NPE。
我假设主题不为空:
while (X == true && flag == true) {
input = JOptionPane.showInputDialog("Tell me more about " + topics[z]);
String temp = input;
parts = new String[initialArraySize];
if (input != null) {
parts = temp.split(" ");
flag = true;
}
else if (input == null) {
flag = false;
}
for (int i = 0; i < parts.length; i++) {
for (int x = 0; x < topics.length; x++) {
if (parts[i].equals(topics[x])) {
cut = parts[i];
break;
}
}
}
for (int i = 0; i < topics.length; i++) {
if (cut.equals(topics[i])) {
z = i;
break;
}
}
input = cut;
System.out.print(cut);
System.out.println(z);
X = Arrays.asList(topics[z]).contains(input);
System.out.println(X);
}
单击“取消”按钮时,您想要什么?我在我的eclipse控制台中得到这个消息:线程主java.lang.NullPointerException中的异常位于AMRGst2.mainAMRGst2.java:62,取消时我的控制台中基本上没有错误或红色。您需要编写parts=temp.split;内部if输入!=null,并确保在此之前已初始化部件;否则,你会得到NPE在线部分。长度以及是!!感谢堆,这已经奏效:有趣的是,一旦你看到解决方案,它似乎是如此明显哈哈