使用 .split 方法处理 Null 问题 & JOP.InputDialog Java
Handling Null issue with .split method & JOP.InputDialog Java
所以这是一个 uni 项目的代码片段,我对 java 来说还很新,所以请原谅任何糟糕的代码。限制之一是代码在退出/取消时不能有错误。所以我知道 JOptionPane.showInputDialog returns 上的取消按钮为空,但 'parts = temp.split(" ")' 的部分似乎出于我不知道的原因阻止输入为空?当我摆脱 parts=temp.split() 时,选择取消按钮时不会抛出异常,但显然 for 循环不会 work.So 我需要做的是没有异常或在 cancel.Any 帮助下产生的错误将不胜感激! :)
** 编辑** 我们也被禁止使用 catch、try 或 break any while loops.Must 以 true / false 退出。
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);
}
你需要在if (input != null)
里面写上parts = temp.split(" ");
,并确保parts
在这之前也被初始化;否则你也会在行 parts.length
中得到 NPE
。
我假设 topics
不为空:
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);
}
所以这是一个 uni 项目的代码片段,我对 java 来说还很新,所以请原谅任何糟糕的代码。限制之一是代码在退出/取消时不能有错误。所以我知道 JOptionPane.showInputDialog returns 上的取消按钮为空,但 'parts = temp.split(" ")' 的部分似乎出于我不知道的原因阻止输入为空?当我摆脱 parts=temp.split() 时,选择取消按钮时不会抛出异常,但显然 for 循环不会 work.So 我需要做的是没有异常或在 cancel.Any 帮助下产生的错误将不胜感激! :) ** 编辑** 我们也被禁止使用 catch、try 或 break any while loops.Must 以 true / false 退出。
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);
}
你需要在if (input != null)
里面写上parts = temp.split(" ");
,并确保parts
在这之前也被初始化;否则你也会在行 parts.length
中得到 NPE
。
我假设 topics
不为空:
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);
}