整数输入检查/递归问题

时间:2019-03-11 22:42:53

标签: java recursion

我已经为任务编写了程序: “ 给出两个字符串a1和a2的数组,将按a1的字符串的字典顺序返回排序的数组r,它们是a2的字符串的子字符串。请注意:r必须没有重复项。

一切正常,但是由于某些原因,当我运行程序时,我从方法“ array.second_array_size();”收到错误消息。尽管我什至没有输入任何信息。大小的第一种和第二种方法都是强制用户输入适当的整数数组大小,然后他才能通过递归执行其他任何操作。这是负责我程序中所有数组方法的主类代码。

`
package Task1;
        import java.util.Scanner;
        import java.util.Set;
        import java.util.HashSet;
        import java.util.ArrayList;
        import java.util.Arrays;
        public class Array_Shenanigans
        {
            int size;
            Scanner in = new Scanner(System.in);
            public String[] a1, a2, r;
            public int first_array_size()
            {
                try
                {
                    String line = in.nextLine();
                    size = Integer.parseInt(line);
                }
                catch (NumberFormatException e) {
                    System.out.println("Please, input a proper size of the first array");
                    first_array_size();
                }
                return size;
            }
            public void first_array_input()
            {
                a1 = new String[size];
                for (int i = 0; i != size; i++)
                {
                    System.out.println("Input the array element number " + (i+1));
                    a1[i] = in.next();
                }
            }
            public int second_array_size()
            {
                try
                {
                    String line = in.nextLine();
                    size = Integer.parseInt(line);
                }
                catch (NumberFormatException e) {
                    System.out.println("Please, input a proper size of the second array");
                    second_array_size();
                }
                return size;
            }
            public void second_array_input()
            {
                a2 = new String[size];
                for (int i = 0; i != size; i++)
                {
                    System.out.println("Input the array element number " + (i+1));
                    a2[i] = in.next();
                }
            }
            public void uber_array_creation()
            {
                ArrayList r1 = new ArrayList();
                for (int i = 0; i != a1.length; i++) {
                    for (int j = 0; j != a2.length; j++) {
                        if (a2[j].contains(a1[i])) {
                            r1.add(a1[i]);
                        }
                    }
                }
                Set<String> set = new HashSet<>(r1);
                r1.clear();
                r1.addAll(set);
                r = (String[]) r1.toArray(new String[r1.size()]);
            }
            public void uber_array_sort()
            {
                Arrays.sort(r);
            }
            public void uber_array_output()
            {
                for (int i = 0; i < r.length; i++)
                {
                    System.out.print(r[i] + " ");
                }
            }
        }
`

我设法通过不为第二种方法创建一条“ println”消息来隐藏该错误,因此从捕获到的异常中发出的警告消息的工作方式与常规方法消息一样,但显然仍然感觉出了问题,尽管工作。

这是我的主要职责,正如Paul所问的那样,这是一个好主意。

`

    import Task1.Array_Shenanigans;
public class Test2 {
    public static void main(String[] args) {

        Array_Shenanigans array = new Array_Shenanigans();
        System.out.println("Please, input a proper size of the first array");
        array.first_array_size();
        array.first_array_input();
        array.second_array_size();
        array.second_array_input();
        array.uber_array_creation();
        array.uber_array_sort();
        array.uber_array_output();
    }  
}

` 如您所见,没有

System.out.println("Please, input a proper size of the second array");

之前

array.second_array_size();

因为该错误代替了我,我将在控制台中得到两张而不是1张。

0 个答案:

没有答案