Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/385.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在java命令行中获取多行输入_Java_Stdin - Fatal编程技术网

在java命令行中获取多行输入

在java命令行中获取多行输入,java,stdin,Java,Stdin,我试图解决的问题是,给定一个整数N,找到这个数字中的数字,这些数字正好除以0作为余数,然后显示它们的计数。对于N=24,有两位数字− 2 & 4. 这两个数字正好除以24。所以我们的答案是2。输入格式是第一行包含T个测试用例,后面是T行,每个行包含一个整数N。 这是我的密码 public static void main(String[] args) throws IOException { System.out.println("Please enter your i

我试图解决的问题是,给定一个整数N,找到这个数字中的数字,这些数字正好除以0作为余数,然后显示它们的计数。对于N=24,有两位数字− 2 & 4. 这两个数字正好除以24。所以我们的答案是2。输入格式是第一行包含T个测试用例,后面是T行,每个行包含一个整数N。 这是我的密码

public static void main(String[] args) throws IOException {

            System.out.println("Please enter your inputs");

            BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
            String line;

           ArrayList<String> arr = new ArrayList<String>();

        int i=0;
        while ((line = br.readLine()) != null && line.length() != 0){
            arr.add(line);
            i++;
        }

            if(Integer.parseInt(args[0]) != (args.length -1)){
                System.out.println("Wrong number of inputs");
            }else{
                for(int j = 1; j< args.length; j++){

                    System.out.println(findDivisor(Integer.parseInt(args[j])));

                }
            }


        }
        public static int findDivisor(int n){
            int count = 0;
            String s = Integer.toString(n);
            char[] c= s.toCharArray();
            for(int i = 0; i< c.length; i++){
                String temp = Character.toString(c[i]);
                int num = Integer.parseInt(s);
                if(num == 0)
                    count += 0;
                else if(n%num == 0){
                    count +=1;
                }
            }
            return count;
        }
在添加Arraylist以读取输入时,程序似乎进入了一个无限循环。根据第一次输入,我需要获取输入的数量,然后进行处理。就像第一个输入是2一样,我的程序应该等待另外两个命令行输入,然后在第三次按enter run键。如何将该功能调用到此代码中。

尝试使用该类:

如果要等到所有输入都在第一位,请创建一个大小为T的数组以跟踪整数:

import java.util.Scanner;

public static void main(String[] args){
        Scanner sc = new Scanner(System.in);

        // Read in T.
        int T = sc.nextInt();

        int[] myNumbers = new int[T];

        // Read in all input, and calculate the number of digit divisors.
        for (int i = 0; i < T; i++){
            int n = sc.nextInt()
            myNumbers[i] = findDivisor(n);
        }

        // For each input, print out the number of digit divisors.
        System.out.println("Number of digit divisors:");
        for (int i = 0; i < T; i++){
            System.out.println(myNumbers[i]);
        }
}

Java数组不是动态调整大小的。使用类似ArrayList的集合。@ElliottFrisch请查看编辑。现在更改下一个语句以使用arr而不是args。
import java.util.Scanner;

public static void main(String[] args){
        Scanner sc = new Scanner(System.in);

        // Read in T.
        int T = sc.nextInt();

        int[] myNumbers = new int[T];

        // Read in all input, and calculate the number of digit divisors.
        for (int i = 0; i < T; i++){
            int n = sc.nextInt()
            myNumbers[i] = findDivisor(n);
        }

        // For each input, print out the number of digit divisors.
        System.out.println("Number of digit divisors:");
        for (int i = 0; i < T; i++){
            System.out.println(myNumbers[i]);
        }
}