Exception in thread "main" java.util.NoSuchElementException
at java.base/java.util.Scanner.throwFor(Scanner.java:937)
at java.base/java.util.Scanner.next(Scanner.java:1478)
at SmallTowns.inputCities(SmallTowns.java:15)
at CitySystem.main(CitySystem.java:9)
Предназначенная реализация после устранения ошибки:
в методе inputCities() класса SmallTowns:
- Цикл while используется для создания нового объекта City, вызова метода setDetails() объекта City и чтения следующих значений currName и currRating из входных данных соответственно.
- Объект City для каждой пары имени и рейтинга добавляется в список cityList.
- Если следующее currName, прочитанное из входных данных, равно «done», цикл while завершается.
Пример: если входные данные — Natrona B Gillette B Glendo A Asaph A Done, то выходные данные:
City: Natrona, Rating: B City: Gillette, Rating: B City: Glendo, Rating: A City: Asaph, Rating: A
import java.util.ArrayList;
public class CitySystem {
public static void main(String[] args) {
Scanner scnr = new Scanner(System.in);
SmallTowns smallTowns = new SmallTowns();
smallTowns.inputCities(scnr);
smallTowns.printCities();
}
}
public class City {
private String name;
private char rating;
public void setDetails(String newName, char newRating) {
name = newName;
rating = newRating;
}
public void print() {
System.out.println("City: " + name + ", Rating: " + rating);
}
}
import java.util.Scanner;
import java.util.ArrayList;
public class SmallTowns {
private ArrayList cityList = new ArrayList();
public void inputCities(Scanner scnr){
String currName = " ";
char currRating = ' ';
while (!currName.equals("done")){
City newCity = new City();
newCity.setDetails(currName, currRating);
cityList.add(newCity);
currName = scnr.next();
currRating = scnr.next().charAt(0);
}
}
public void printCities() {
City currCity;
int i;
for (i = 0; i < cityList.size(); ++i) {
currCity = cityList.get(i);
currCity.print();
}
}
}
Подробнее здесь: https://stackoverflow.com/questions/798 ... ect-output
Мобильная версия