Ну, я сделал этот простой старт, но я не мог придумать, как отменить ввод целых чисел пользователем.
Мой старт:
public static void main(String[] args) {
try {
Scanner console = new Scanner (System.in);
System.out.println("> ");
String input = console.nextLine();
while (! input.equals("quit")){
System.out.println();
System.out.print("> ");
input = console.next();
}
}catch (Exception e){
System.out.println("Error: Invalid Input");
}
System.out.println("Bye!");
}
Итак, я хочу, чтобы пользовательский ввод, такой как 10 15 40 100 3400, стал 3400 100 40 15 10. Я знаю, что это cal использовать array.tostring где-нибудь, но я не знаю, где и как.
Храните каждый вход в List<String>
и итерации в обратном порядке в вашем массиве для вывода.
Это преобразованная версия вашего начального main()
.
public static void main(String[] args) {
List<String> out = new ArrayList<String>();
try {
Scanner console = new Scanner (System.in);
System.out.println("> ");
String input = console.nextLine();
out.add(input);
while (!input.equals("quit")){
input = console.next();
out.add(input);
}
}catch (Exception e){
System.out.println("Error: Invalid Input");
}
for(int i = out.size() - 1; i >=0; i--){
System.out.println(out.get(i));
}
System.out.println("Bye!");
}
public static void main(String args[])
{
Integer[] ints = {10, 20, 5, 55}; // Get the input from user and for an Integer array
List<Integer> integers= Arrays.asList(ints);
Collections.reverse(integers);
System.out.println(integers);
}
Вывод:
[55, 5, 20, 10]
Что-то вроде этого...
String myNum = "10 15 40 100 3400";
String[] numbers = myNum.split(" ");
List<String> myList = Arrays.asList(numbers);
Collections.reverse(myList); // myList will has 3400 100 40 15 10
100 200
становится 002 001
Добавьте inputs
в ArrayList
затем используйте команду reverse.
ArrayList<int> aList = new ArrayList<int>();
Добавить
aList.add(input);
Отменить
Collections.reverse(aList);
Для этой проблемы я собираюсь сделать некоторые предположения:
а) Вы знаете, что все входы будут целыми
б) Вам не нужно ничего делать с целыми числами, просто распечатайте их (то есть: арифметические)
c) Вы только хотите отменить порядок, а не другие заказы
d) Ваши целые числа всегда разделяются пробелами
Если предположение B верно
Поскольку вы читаете входные данные в виде строки, и поскольку ваш пример использует значения, разделенные пробелом, тогда вам нужно
1) Отделите входы и
2) Распечатайте их отдельно (в обратном порядке)
Итак, чтобы сделать первый вывод, вы можете использовать строковую утилиту, которая разделяет строку на основе символа. Как разбить строку. Если вы не знакомы с массивами, вот ссылка.
Это будет выглядеть примерно так.
String input = console.nextLine();
String[] inputArray = input.split(" ");
В этот момент inputArray будет выглядеть как {"10", "15", "40", "100", "3400"}
.
Теперь вам просто нужен способ отображения каждого в обратном порядке. Легкий способ сделать это будет с циклом for, потому что вы можете направить его, и вы знаете, сколько раз он будет выполняться. Поскольку вы хотите напечатать в обратном порядке, вы начнете в конце и начнете работу до начала. Как это:
for (int i = inputArray.length - 1; i >= 0; i--) {
Затем просто распечатайте элемент массива, сделав так, чтобы ваш цикл выглядел так:
for (int i = inputArray.length - 1; i >= 0; i--) {
System.out.println(inputArray[i]);
}
Если определение B неверно
Это означало бы, что вам нужно каким-то образом использовать целые числа. Это просто добавит один шаг к предыдущему процессу (т.е. "Если предположение B правильно"), где вы конвертируете ("разбираете") строку в целое число. Итак, начиная с кода из предыдущего раздела:
String input = console.nextLine();
String[] inputArray = input.split(" ");
for (int i = inputArray.length - 1; i >= 0; i--) {
System.out.println(inputArray[i]);
}
Сначала мы хотим создать структуру для хранения целых чисел, тогда мы хотим поместить каждую строку в целочисленный массив. Мы делаем это, используя static Integer.valueOf(String input)
.
String input = console.nextLine();
String[] inputArray = input.split(" ");
// Array to hold integer values
int[] inputIntArray = new int[inputArray.length];
for (int i = 0; i < inputIntArray.length; i++) {
inputIntArray[i] = Integer.valueOf(inputArray[i]);
}
for (int i = inputIntArray.length - 1; i >= 0; i--) {
// Do whatever operations you want here
System.out.println(inputIntArray[i]);
}
Тогда вам должно быть хорошо.