尝试 catch while 循环 Java
Try catch while loop Java
大家好,显然我尝试在 while 循环中使用 try-catch 并使用静态字段。我的情况是我创建了一个扫描器来获取用户输入并使用 String split 方法尝试通过 spaces (" ") 将字符串拆分为只有 2 个的数组。不知何故,当用户仅输入字符串时,我使用了 try-catch,第二个 2 数组将为 null 并且它将是 ArrayIndexOutOfBoundsException。显然,当我首先使用这个 try-catch 时,当我输入由 space 分隔的 2 个字符串时,它会打印出两个数组,但不知何故在下一行,当我只键入 1 个字符串时,这意味着你的第二个字符串数组将是null 它也打印出第二个字符串数组,这显然是第二个字符串数组,它是我之前输入的字符串。
我想要的是,当我只键入想要的字符串数组时,第二个字符串数组将显示为空。
如果你试试代码就更好了,谢谢。
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);
}
}
我觉得是全局字段的问题
当您只键入一个字符串时,没有第二个元素为 null,只是没有第二个元素,该数组的大小为 1
你应该做的是
// follow naming conventions , don't name is SpaceSpilter
for(String s : spaceSpliter)
System.out.print(s + " ");
它适用于任何长度的字符串,您不需要使用任何 try catch
这是loop第二次迭代时的截图,str2 = SpaceSpliter1;是您获得异常的行,此时 str2 具有先前的迭代值。这就是为什么您的结果是当前迭代的 str1 值和先前迭代的 str2 值的串联。
只需在 do-while 循环中声明您的字符串变量。
编辑 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);
}
大家好,显然我尝试在 while 循环中使用 try-catch 并使用静态字段。我的情况是我创建了一个扫描器来获取用户输入并使用 String split 方法尝试通过 spaces (" ") 将字符串拆分为只有 2 个的数组。不知何故,当用户仅输入字符串时,我使用了 try-catch,第二个 2 数组将为 null 并且它将是 ArrayIndexOutOfBoundsException。显然,当我首先使用这个 try-catch 时,当我输入由 space 分隔的 2 个字符串时,它会打印出两个数组,但不知何故在下一行,当我只键入 1 个字符串时,这意味着你的第二个字符串数组将是null 它也打印出第二个字符串数组,这显然是第二个字符串数组,它是我之前输入的字符串。 我想要的是,当我只键入想要的字符串数组时,第二个字符串数组将显示为空。 如果你试试代码就更好了,谢谢。
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);
}
}
我觉得是全局字段的问题
当您只键入一个字符串时,没有第二个元素为 null,只是没有第二个元素,该数组的大小为 1
你应该做的是
// follow naming conventions , don't name is SpaceSpilter
for(String s : spaceSpliter)
System.out.print(s + " ");
它适用于任何长度的字符串,您不需要使用任何 try catch
这是loop第二次迭代时的截图,str2 = SpaceSpliter1;是您获得异常的行,此时 str2 具有先前的迭代值。这就是为什么您的结果是当前迭代的 str1 值和先前迭代的 str2 值的串联。
只需在 do-while 循环中声明您的字符串变量。
编辑 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);
}