Java 为什么';扫描器类不能识别其他数字吗?
预期产出: 最大的整数是9 序列中的负整数数为3 序列中最大的偶数整数是8 可被3整除的数之和是6Java 为什么';扫描器类不能识别其他数字吗?,java,java.util.scanner,Java,Java.util.scanner,预期产出: 最大的整数是9 序列中的负整数数为3 序列中最大的偶数整数是8 可被3整除的数之和是6 谢谢大家! 只调用一次console.nextInt(),因此只读取一个号码。如果要调用,需要循环调用控制台.hasNext()。因为您使用的是系统.in。例如: while(console.hasNextInt()){ number=console.nextInt(); //计算 } 您只能读取一次输入。我在代码中没有看到循环,所以number=console.nextInt()仅运行一次。你应
谢谢大家! 只调用一次console.nextInt(),因此只读取一个号码。如果要调用,需要循环调用
控制台.hasNext()
。因为您使用的是系统.in
。例如:
while(console.hasNextInt()){
number=console.nextInt();
//计算
}
您只能读取一次输入。我在代码中没有看到循环,所以number=console.nextInt()代码>仅运行一次。你应该做的是把它放在一个循环中,当你有了所有的数字时退出循环(你如何检查它可以通过多种方式完成),当你在循环中时,把你收到的任何输入放入一个数组或另一个数据结构中。收集完输入后,检查数据结构上的所有数字。
1-您必须首先从用户处接收数据,然后计算数据并生成输出。
您可以使用数组执行此操作,并在完成放置数据后,对其进行计算。
例如:
Output:
2
-1
-5
-3
9
8
0
The largest integer is 2
The number of negative integers in the sequence is 0
The largest even integer in the sequence is 2
The sum of numbers divisible by 3 is 0
Process finished with exit code 0
private static final int DATA_SIZE=5;
公共静态void main(字符串[]args){
扫描仪=新的扫描仪(System.in);
ArrayList数据=新的ArrayList();
//将数据放入数组
while(data.size()=数据大小){
data.add(scanner.nextInt());
}
//从数组计算数据。。。
}
2-当您调用一个字段(如nextInt()Scanner类)时,它只执行一次,然后将其放入循环中重复几次。。。
当然,我还有其他建议
例如,您可以使用main
方法中可用的数组(当然要有知识)
或
首先向用户询问您拥有的数据量,然后获取数据并进行计算
或者……如果代码只执行一次,则为该行。因此,扫描仪只接收第一个输入。使用while循环接收多个输入。如果要同时键入所有数字,应设置一个端子号。当您输入所有号码时,应添加终端号码,以表明输入结束。
例如:
private static final int DATA_SIZE = 5;
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
ArrayList<Integer> data = new ArrayList<>();
// put data in array
while (data.size() == DATA_SIZE){
data.add(scanner.nextInt());
}
// calculate data from array ...
}
publicstaticvoidmain(字符串[]args){
整数,计数=0,和=0;
int最大=0,largestEvenNumber=0;
扫描仪控制台=新扫描仪(System.in);
int endNumber=-1;//设置终端号
做{
number=console.nextInt();//读取用户输入的整数
如果(数>最大){//计算最大数的条件
最大=数量;
}
if(number<0){//计算序列中负整数个数的条件
计数=计数+1;
}
if(number%2==0){//计算序列中最大偶数整数的条件
if(最大偶数<个数){
最大偶数=个数;
}
}
if(number%3==0){//计算可被3整除的数之和的条件
总和+=数字;
}
}while(number!=endNumber);
System.out.println(“\n最大整数为”+最大整数);
System.out.println(“序列中负整数的数量为”+count);
System.out.println(“序列中最大的偶数为”+最大的偶数);
System.out.printf(“可被3整除的数字之和为%d”,总和);
}
输出正常。我一次复制了所有的数字,然后尝试执行。我不想输入每个数字。那你想如何输入数字呢?
private static final int DATA_SIZE = 5;
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
ArrayList<Integer> data = new ArrayList<>();
// put data in array
while (data.size() == DATA_SIZE){
data.add(scanner.nextInt());
}
// calculate data from array ...
}
public static void main(String [] args){
int number, count = 0, sum = 0;
int Largest= 0, largestEvenNumber = 0;
Scanner console = new Scanner(System.in);
int endNumber = -1; //set the terminal number
do {
number = console.nextInt(); // read an integer entered by a user
if (number > Largest) { // Condition for computing the largest number
Largest = number;
}
if (number < 0) { // Condition for computing the number of negative integers in the sequence
count = count + 1;
}
if (number % 2 == 0) { // Condition for computing the largest even integer in the sequence
if (largestEvenNumber < number) {
largestEvenNumber = number;
}
}
if (number % 3 == 0) { // Condition for computing the sum of numbers divisible by 3
sum += number;
}
}while (number!=endNumber);
System.out.println("\nThe largest integer is " + Largest);
System.out.println("The number of negative integers in the sequence is " + count);
System.out.println("The largest even integer in the sequence is " + largestEvenNumber);
System.out.printf("The sum of numbers divisible by 3 is %d", sum);
}