从用户输入中获取元素数量?

时间:2018-06-23 10:38:59

标签: java arrays variables scanning

我一直在搜索这个,但是我仍然不明白为什么这不起作用。用户将输入一个整数数组,我需要查找该数组中有多少个元素。

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”。任何帮助将不胜感激。

3 个答案:

答案 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);
   }
}