在 java 命令行中进行多行输入
Taking multiline inputs in java command line
我要解决的问题是给定一个整数 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 run 时。如何在此代码中调用该功能。
尝试使用 Scanner class:
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]);
}
}
我要解决的问题是给定一个整数 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 run 时。如何在此代码中调用该功能。
尝试使用 Scanner class:
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]);
}
}