Как мне сделать программу, которая обратит пользовательский ввод целых чисел в Java?

1

Ну, я сделал этот простой старт, но я не мог придумать, как отменить ввод целых чисел пользователем.

Мой старт:

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 где-нибудь, но я не знаю, где и как.

  • 0
    Вы пробовали что-нибудь?
  • 0
    Это в основном просто просит нас написать вашу программу для вас.
Показать ещё 3 комментария
Теги:
reverse

5 ответов

2
Лучший ответ

Храните каждый вход в 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!"); 
}
  • 0
    Как бы я заставить его работать? Что мне нужно импортировать? Я не мог запустить этот код.
  • 0
    Вам нужно будет импортировать java.util.ArrayList, java.util.List и java.util.Scanner.
Показать ещё 4 комментария
1
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]
1

Что-то вроде этого...

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
  • 0
    100 200 становится 002 001
1

Добавьте inputs в ArrayList затем используйте команду reverse.

ArrayList<int> aList = new ArrayList<int>();

Добавить

aList.add(input);

Отменить

Collections.reverse(aList);
0

Для этой проблемы я собираюсь сделать некоторые предположения:

а) Вы знаете, что все входы будут целыми
б) Вам не нужно ничего делать с целыми числами, просто распечатайте их (то есть: арифметические)
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]);
    }

Тогда вам должно быть хорошо.

  • 0
    Очень подробно. Я не думал об использовании массивов, но теперь я вижу, что использование этого необходимо.
  • 0
    «Нужно» не совсем верно. Они подходят для этого простого примера, но есть и другие реализации, которые работают. Подумайте больше об основных шагах, связанных с этим ответом, а не о структурах данных, чтобы не сводить взгляды к одному решению Список или стек могут очень легко решить эту проблему. Рад, что смог помочь.
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню