Получение количества элементов из пользовательского ввода? - PullRequest
0 голосов
/ 23 июня 2018

Я гуглил это, но я все еще не понимаю, почему это не работает. Пользователь вводит массив целых чисел, и мне нужно найти, сколько элементов в этом массиве.

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 голосов
/ 23 июня 2018

Ваш код работает нормально. Проверьте эту ссылку. 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);
   }
}
0 голосов
/ 23 июня 2018

Вы можете выйти из цикла при условии, что слово введено, например, «выход», так как вы хотите получить число int.Ваш код работает для подсчета числа целых чисел, введенных в сканер, но вы никогда не объявляли массив для хранения всех значений.

 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

}

}

0 голосов
/ 23 июня 2018

Когда вы читаете из командной строки, вы должны сигнализировать EOF (конец файла), иначе как ваша программа узнает, прекратили ли вы вводить элементы или нет?В окнах вы можете нажать Ctrl-D, и ваш сканер перестанет читать, например.

...