我遇到了这个问题,而用户需要在一个输入中输入一定数量的数字,然后程序将逐个输出数字。例如,用户输入4 6 8,然后程序将输出4 6 8给用户。
我所做的代码是这样的:
import java.util.ArrayList;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
int N;
String num;
Scanner in = new Scanner(System.in);
System.out.println("Enter number:");
num = in.nextLine();
ArrayList<Integer> numbers = new ArrayList<Integer>();
for(int x = 0; x < num.length(); x++)
{
char c = num.charAt(x);
if(Character.getNumericValue(c) >= 0 ){
numbers.add(Character.getNumericValue(c));
}
}
for(int n=0; n<numbers.size(); n++){
System.out.println(numbers.get(n));
}
}
}
但是我认为它不是很有效,因为只做一个简单的任务需要很长时间。那么,你能提出一些更简单的建议吗?谢谢!
答案 0 :(得分:2)
如果所有数字都在一行中,那么这可以解决问题:
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String[] tokens = reader.readLine().split(" ");
for (int i = 0; i < tokens.length; i++)
System.out.println(Integer.parseInt(tokens[i]));
有关详细信息,请参阅BufferedReader。
答案 1 :(得分:1)
在扫描仪上设置分隔符并读取每个数字一个int
Scanner in = new Scanner(System.in);
in.useDelimiter("\\s");
System.out.println("Enter number:");
ArrayList<Integer> numbers = new ArrayList<Integer>();
while (in.hasNextInt()) {
numbers.add(in.nextInt());
}
答案 2 :(得分:0)
这是我的想法:
String num = "4 6 8"; // user's input
System.out.println(num.replaceAll("\\s+", "\n"));
4 6 8
如果您想忽略除号码以外的所有内容,可以使用"[^\\d]+"
代替"\\s+"
。