【问题标题】:How to print elements of two char arrays in a specific way?如何以特定方式打印两个 char 数组的元素?
【发布时间】:2021-08-04 21:31:00
【问题描述】:

输入:

2,3,1
5,2,3

预期输出:

2,5,3,2,1,3

所有数字都应该用逗号分隔。

我的代码:

public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);

    String input1 = scanner.nextLine();
    char[] elms1 = input1.toCharArray();

    String input2 = scanner.nextLine();
    char[] elms2 = input2.toCharArray();

    for (int i = 0; i < elms1.length; i++)
        System.out.print(elms1[i] + "," + elms2[i]);
}

唉,它输出了一个带有额外逗号的意外结果,它看起来像:

输入:

2,3,1
5,2,3

我的输出是:

2,5,,,3,2,,,1,3

如何消除多余的逗号以获得​​正确的输出?

【问题讨论】:

  • 代码很好,您将输入作为一行,因此 char 数组为 {'2', ',', '3', ',' '1', ','}
  • 欢迎来到 Stack Overflow!当您将2,3,1 转换为字符数组时,您显然会得到一个[2, comma, 3, comma, 1] 数组,因此您的输出并不意外。您可能正在寻找的是String.split 方法,您可以使用它来分割用逗号。我不知道你为什么要首先转换成字符,那么 2 位数字呢?
  • 您也可以将您的打印语句更改为System.out.print(elms1[i]+elms1[i+1]+","+elms2[i]+elms2[i+1]);,并将i 增加2 作为i+=2
  • 欢迎来到 Stack Overflow!请不要将解决方案公告编辑到问题中。接受(即单击旁边的“勾选”)现有答案之一,如果有的话。如果现有答案尚未涵盖您的解决方案,您还可以创建自己的答案,甚至接受它。

标签: java arrays sorting char


【解决方案1】:

你要做的就是在你的打印语句中做一点改变:

for (int i = 0; i < elms1.length; i++) {
    if (i == elms1.length - 1) {
        System.out.print(elms1[i] + "," + elms2[i]);
    } else {
        System.out.print(elms1[i] + "," + elms2[i] + ",");
    }
}

【讨论】:

  • 我将您的 FOR 循环迭代更改为 i+=2 并且它运行顺利。谢谢。
【解决方案2】:

你可以这样做:

Scanner scanner = new Scanner(System.in);

String input1 = scanner.nextLine();
List<Integer> elms1 = Arrays.stream(input1.split(",")).map(Integer::parseInt).collect(Collectors.toList());

String input2 = scanner.nextLine();
List<Integer> elms2 = Arrays.stream(input2.split(",")).map(Integer::parseInt).collect(Collectors.toList());

for (int i = 0; i < elms1.size()-1; i++) {
    System.out.print(elms1.get(i) + "," + elms2.get(i) + ",");
}

System.out.print(elms1.get(elms1.size()-1) + "," + elms2.get(elms1.size()-1));

输出(基于您的输入):

2,5,3,2,1,3

【讨论】:

  • 唯一通过所有测试的代码是你的。我今天学到了一些新东西,谢谢!
【解决方案3】:

您可以更改当前代码的打印语句,考虑到逗号是有效的字符输入,每次从每个数组中提取 2 个字符。这是您的代码修复:

for (int i = 0; i < elms1.length; i += 2) {
    if (i == elms1.length - 1)
        System.out.print(elms1[i]+","+elms2[i]);
    else
        System.out.print(elms1[i]+""+elms1[i+1]+""+elms2[i]+""+elms2[i+1]);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-27
    • 1970-01-01
    • 2014-12-22
    相关资源
    最近更新 更多