[英]Try catch while loop Java
大家好,显然我尝试在 while 循环中使用 try-catch 并使用静态字段。 我的情况是我创建了一个扫描仪来获取用户输入并使用 String split 方法尝试将字符串拆分为 2 个空格(“”)的数组。 不知何故,当用户输入字符串时,我使用了 try-catch,第二个 2 数组将为空,它将是 ArrayIndexOutOfBoundsException。 显然,当我首先使用这个 try-catch 时,当我输入 2 个由空格分隔的字符串时,它会打印出两个数组,但不知何故在下一行中,当我只键入 1 个字符串时,这意味着第二个字符串数组将为空它打印出来第二个字符串数组,显然第二个字符串数组是我之前输入的字符串。 我想要的是当我只输入想要字符串数组时,第二个字符串数组将显示为空。 如果您尝试代码,它会更好,谢谢。
import java.util.Scanner;
public class FinchTest {
static String str1;
static String str2;
public static void main(String[] args) {
do {
try {
Scanner scan = new Scanner(System.in);
String userInput= scan.nextLine();
String[] SpaceSpliter = userInput.split(" ");
str1 = SpaceSpliter[0];
str2 = SpaceSpliter[1];
System.out.println(str1+str2);
} catch ( java.lang.ArrayIndexOutOfBoundsException e) {
if(str2==null) {
System.out.println(str1+str2);
}
else {
System.out.println(str1+str2);
}
}
}while(true);
}
}
我认为问题是因为全球领域
当您只输入一个字符串时,没有第二个元素为空,只有没有第二个元素,该数组的大小为 1
你应该做的是
// follow naming conventions , don't name is SpaceSpilter
for(String s : spaceSpliter)
System.out.print(s + " ");
它适用于任何长度的 string ,并且您不需要使用任何 try catch
这是循环第二次迭代时的截图, str2 = SpaceSpliter 1 ; 是出现异常的那一行,此时 str2 具有先前的迭代值。 这就是为什么您的结果是当前迭代的 str1 值和前一次迭代的 str2 值的串联。
只需在do-while循环中声明您的 String 变量。
编辑 1:
public static void main(String[] args) {
do {
String str1 = new String();
String str2 = new String();
try {
Scanner scan = new Scanner(System.in);
String userInput= scan.nextLine();
String[] SpaceSpliter = userInput.split(" ");
str1 = SpaceSpliter[0];
str2 = SpaceSpliter[1];
System.out.println(str1+str2);
} catch ( java.lang.ArrayIndexOutOfBoundsException e) {
if(str2==null) {
System.out.println(str1+str2);
}
else {
System.out.println(str1+str2);
}
}
}while(true);
}
编辑2:
public static void main(String[] args) {
do {
String str1 = null;
String str2 = null;
try {
Scanner scan = new Scanner(System.in);
String userInput= scan.nextLine();
String[] SpaceSpliter = userInput.split(" ");
str1 = SpaceSpliter[0];
str2 = SpaceSpliter[1];
System.out.println(str1+str2);
} catch ( java.lang.ArrayIndexOutOfBoundsException e) {
if(str2==null) {
System.out.println(str1+str2);
}
else {
System.out.println(str1+str2);
}
}
}while(true);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.