Я пытаюсь написать код, в котором вы сортируете заданный список чисел, и я пытаюсь сделать это с помощью ArrayList. Я использую цикл while для повторного ввода. Это мой код:
import java.util.Scanner;
import java.util.ArrayList;
public class sortinggg {
public static Scanner keyboard = new Scanner(System.in);
public static ArrayList<Integer> number = new ArrayList<Integer>();
public static void main (String [] args) {
int count= 0;
System.out.println("Enter your numbers.");
while (keyboard.hasNextInt()); {
number.add(keyboard.nextInt());
}
Счетчик целых чисел сейчас не имеет значения, поскольку я использую его только при сортировке списка.
Проблема в том, что после ввода чисел, даже если я ввожу строку (например), программа не переходит к следующей строке кода. Я что-то здесь упускаю?
P.S. Я устал искать вопросы, которые задавались ранее по этой теме, но ни одно из предложенных решений не помогло мне. Заранее спасибо за вашу помощь!
Возможный дубликат Проблема со сканером при использовании nextLine после nextXXX
@Elliott Frisch Замечены!
@ElliottFtisch Это исправило! Спасибо за вашу помощь, вы новичок в Java и кодировании в целом ..




Попробуй это:
import java.util.ArrayList;
import java.util.Scanner;
public class Main
{
public static void main(String args[])
{
Scanner keyboard = new Scanner(System.in);
ArrayList<Integer> number = new ArrayList<Integer>();
System.out.println("Enter your numbers:");
while (keyboard.hasNextInt()) {
number.add(keyboard.nextInt());
}
}
}
Модификации:
while (keyboard.hasNextInt()); удалите semicolon(;) в конце.Здесь while loop будет продолжать добавлять значения к arraylist, пока вы не предоставите значения типа int.
Во-первых, неправильный ; сразу после while. Он не дает вам казнить тело. Тогда как ты собираешься пропустить петлю. Вы можете попросить конечного пользователя ввести какое-то специальное значение и использовать его для разрыва цикла. Исправленная версия приведена ниже.
public static void main(String[] args) {
int count = 0;
System.out.println("Enter your numbers or -1 to skip.");
while (keyboard.hasNextInt()) {
int num = keyboard.nextInt();
if (num == -1) {
break;
}
number.add(num);
}
System.out.println(number);
}
while (keyboard.hasNextInt()); {Удалите точку с запятой. На этом ваше тело цикла заканчивается.number.add(keyboard.nextInt());находится в другом (не петлевом) блоке.