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

标签 java stdin

我试图解决的问题是给定一个整数N,找到这个数字中恰好除以N(余数为0的除法)的数字并显示它们的计数。对于 N=24,有 2 位数字 − 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,我的程序应该等待另外 2 个命令行输入,并在第三次按 Enter 时运行。如何在这段代码中调用该功能。

最佳答案

尝试使用Scanner类:

import java.util.Scanner;

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

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

        // Read in T integers, for each print the number of digit divisors.
        for (int i = 0; i < T; i++){
            int n = sc.nextInt()
            System.out.println(findDivisor(n));
        }
}

如果您想等到所有输入都先输入,请创建一个大小为 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 - 在java命令行中获取多行输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27760765/

相关文章:

c - 如何编写在C中传递给Variadic函数的变量

java - LWJGL - 从什么开始写?

c - scanf 格式字符串无法识别

python - 从 python 调用 bash

java - 如何从 Google Custom Search API 获取超过 100 个结果

c - 从 C 中的 stdin 读取数据

java - 如何向 Postgresql CopyManager 指示 session 实例

java - Apache Camel 中的开关盒

java - 将值从 java GUI 插入到 postgresql 数据库中

java - 如何从 oncreate 函数调用 JSONObject 函数?