Поменяйте местами ввод и вывод на печать в виде столбца - PullRequest
0 голосов
/ 01 мая 2020

Я поставил перед собой задачу, которую не могу выполнить. Нужна помощь. Я пытаюсь добиться того, чтобы вводимые пользователем номера менялись парами, а если есть числа, разделенные запятыми, следующий обмен должен выводиться из новой строки. Например, если я скажу: 10000234567,10000234568,10000234569, то вывод должен выглядеть следующим образом:
01002043657,
01002043658,
01002043659

Вот мой код:

import java.util.Scanner;

public class SwapNumbersTest {

public static String swapPairs(String str) {
char[] arr = str.toCharArray();
for (int i = 1; i < arr.length; i += 2) {
  if(arr[i] == ','){
    i+=2;
  }
  char swap = arr[i];
  arr[i] = arr[i - 1];
  arr[i - 1] = swap;
}
return new String(arr);
}

public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("Enter a comma separated numbers: ");
String str = sc.nextLine();
System.out.println(swapPairs(str));
}
}

о чем я думал, что если в пути есть символ ',', то все числа перед этим должны быть записаны в массив символов и выведены из новой строки. Подскажите, пожалуйста, как этого добиться?

Также я заметил, что если входные числа не ровные, то замена работает отлично, если входные числа четные, запятая ',' запутывает все.

Ответы [ 3 ]

0 голосов
/ 01 мая 2020

Одним из способов достижения этого является использование функции Split ()

String[] arr = str.split(",");
0 голосов
/ 01 мая 2020

Вот как сделать именно то, что вы просили:

public class SwapNumbersTest {

    public static String swapPairs(String inputString) {
        String swappedNumbers = "";
        String[] arrayOfNumbers = inputString.split(",");
        for (String str : arrayOfNumbers) {
            char[] arr = str.toCharArray();
            for (int i = 1; i < arr.length; i += 2) {
                if (arr[i] == ',') {
                    i += 2;
                }
                char swap = arr[i];
                arr[i] = arr[i - 1];
                arr[i - 1] = swap;
            }
            swappedNumbers = swappedNumbers + new String(arr) + ",\n";
        }
        return swappedNumbers.stripTrailing().replaceAll(",$","");
    }

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("Enter a comma separated numbers: ");
        String str = sc.nextLine();
        System.out.println(swapPairs(str));
        sc.close();
    }

}

Если вам не нужны запятые в конце строки, вы упростите это, используя:

        swappedNumbers = swappedNumbers + new String(arr) + "\n";
    }
    return swappedNumbers.stripTrailing();
0 голосов
/ 01 мая 2020

Я не понимаю, чего именно вы хотите, но для преобразования чисел, разделенных запятыми, в массив чисел вы можете сделать следующее.

StringTokenizer st = new StringTokenizer(str, ",");
Array<Integer> arr = new ArrayList<Integer>;

while(st.hasMoreTokens()) {
    arr.add(Integer.parseInt(st.nextToken()));
}

После этого я думаю, что вы можете применить алгоритм что вы в массиве целых.

...