我一直在搜索这个,但是我仍然不明白为什么这不起作用。用户将输入一个整数数组,我需要查找该数组中有多少个元素。
Scanner s = new Scanner(System.in);
int n = 0; //# of elements in list
while(s.hasNextInt()) {
n++;
s.next();
}
System.out.println(n);
我查找了是否在范围外使用变量是否有效,我一直在回答说如果要在范围外使用变量,则应在范围外声明和初始化(在这种情况下,while循环)。但是,这仍然对我不起作用。我的代码现在甚至不会显示“ 0”。任何帮助将不胜感激。
答案 0 :(得分:1)
从命令行读取时,必须发信号通知EOF(文件结尾),否则程序将如何知道是否已停止输入元素?在Windows上,您可以按Ctrl-D,例如,扫描仪将停止读取。
答案 1 :(得分:1)
由于要获取整数计数,因此可以在输入单词的情况下跳出循环,例如“退出”。您的代码可以计算输入扫描仪中整数的数量,但是您从未声明过一个数组来保存所有值。
package com.company;
import java.util.ArrayList;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
ArrayList array = new ArrayList(); //declare your array
Scanner s = new Scanner(System.in);
int n = 0; //# of elements in list
while(s.hasNextInt())
{
n++;
s.next();
array.add(s);//store the array value
if (s.hasNext("exit"))//allow an exit to the loop
break;
}
System.out.println(array.size()); //better, use the size of the array
}
}
答案 2 :(得分:0)
您的代码可以正常工作。 检查此链接。 https://ideone.com/vrnoEz
import java.util.*;
import java.lang.*;
import java.io.*;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
public static void main (String[] args) throws java.lang.Exception
{
Scanner s = new Scanner(System.in);
int n = 0; //# of elements in list
while(s.hasNextInt()) {
n++;
s.next();
}
System.out.println(n);
}
}