[英]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.