交换输入并将输出打印为列

时间:2020-05-01 03:53:30

标签: java arrays char swap

我为自己设置了我无法完成的任务。需要帮忙。 我试图实现的是,用户的输入数字应成对交换,如果有逗号分隔的数字,则下一个交换应从新行输出。 就像我说: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));
}
}

我当时在想,如果有一个char',',那么之前的所有数字都应写入char数组并从新行打印出来。你能告诉我如何实现这种目标吗?

我还注意到,如果输入数字不是偶数,那么交换就可以完美地进行,如果输入数字是偶数,则','逗号将全部搞乱。

3 个答案:

答案 0 :(得分:0)

我不明白您到底想要什么,但是要将逗号分隔的数字转换为数字数组,可以执行以下操作。

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

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

完成此操作后,我认为您可以将自己的算法应用于整数数组。

答案 1 :(得分:0)

一种实现方法是使用Split()函数

String[] arr = str.split(",");

答案 2 :(得分:0)

以下是完全按照您的要求进行操作的方法:

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();