尝试 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);

}