Java обработки ввода из командной строки
Я пытался реализовать java
Программа для обработки ввода пользователя из командной строки. Проблема была в Algorithms
книга (sedgewick
)
1.1.21. Напишите программу, которая читает строки из стандартного ввода, каждая строка содержит имя и два целых числа, а затем использует printf() для вывода таблицы со столбцом имен, целых чисел и результата деления первое за вторым, с точностью до трех знаков после запятой. Вы можете использовать такую программу, чтобы составить таблицу средних значений для игроков в бейсбол или оценок для студентов.
Я попытался реализовать это следующим образом... но я застрял в хранении пользовательского ввода, так что он может быть напечатан с помощью printf()
Я думал, что Сканер будет подходящим для получения пользовательского ввода. До сих пор я не могу сохранить ввод для дальнейшего использования.
Класс Stack
это из книги Седжвика.
Есть идеи, как сделать это правильно?
Scanner input = new Scanner(System.in);
Stack st = new Stack();
while(input.hasNext()){
String tkn = input.next();
st.push(tkn);
if (st.size()==3){
int y = Integer.parseInt((String)st.pop());
int x = Integer.parseInt((String)st.pop());
String name = (String)st.pop();
System.out.println("name="+name+",x="+x+",y="+y);
}
}
1 ответ
Используя st.pop(), он удалит и вернет последний элемент стека. Если вы не хотите, чтобы он был удален, вы можете использовать один заказанный Collection
как ArrayList и получить доступ к элементу через list.get или с помощью итератора.
Еще одно предложение - создать один объект для хранения имени и свойств y, x:
class MyObject {
private String name;
private int x;
private int y;
//... setter and getter methods for the properties
}
Предложение для вашего кода: он вводит ввод в Stack
, затем вытолкните элементы, чтобы создать MyObject
и добавить к list
:
ArrayList listObjects = new ArrayList();
Scanner input = new Scanner(System.in);
Stack st = new Stack();
while(input.hasNext()){
String tkn = input.next();
st.push(tkn);
if (st.size()==3){
int y = Integer.parseInt((String)st.pop());
int x = Integer.parseInt((String)st.pop());
String name = (String)st.pop();
//create and add the object to the list for further use
listObjects.add(new MyObject(name, x, y));
System.out.println("name="+name+",x="+x+",y="+y);
}
}