【问题标题】:How to make equal two char arrays by adding '0'? Java如何通过添加'0'使两个字符数组相等?爪哇
【发布时间】:2021-05-02 11:10:06
【问题描述】:

我遇到了一些问题。我有两个 char 数组(例如 char[] number1 = {'1','1','1','1'} 和 char[] number2 {'2','2'})。现在我想返回与 number1 相同长度的数组,但在左侧的索引中添加 '0' (例如,在这种情况下 => {'0','0','2','2' }

我尝试这样的事情:

public static char[] whichShorter(char[] first,char[] secend){

    if(first.length >= secend.length) return secend;
        else return first;

}

public static char[] whichLonger(char[] first,char[] secend){

    if(first.length >= secend.length) return first;
    else return secend;

}

public static char[] makeEqual(char[] first, char[] secend){
  char[] longer = whichLonger(first,secend);
  char[] shorter =  whichShorter(first, secend);
  char[] addZero = new char[longer.length];
  

    for (int i = shorter.length; i >0 ; i--) {

        addZero[i]=shorter[i-1];

    }

    for (int i = 0; i < addZero.length ; i++) {

        if(addZero[i]==(char) 0) addZero[i]='0';

    }
    
    return addZero;

}

我想它一点也不难,但我很努力,但没有效果(我试着先在纸上画画,一切)。

【问题讨论】:

  • 您忘记提及您包含的代码的问题。确保包含您遇到的任何错误或问题。

标签: java arrays char


【解决方案1】:

你可以这样做:

Stream<Character> leadingZeros = IntStream.range(0, number1.length - number2.length)
        .mapToObj(i -> '0');
Stream<Character> originalChars = IntStream.range(0, number2.length)
        .mapToObj(i-> number2[i]);

Character[] newNumber2 = Stream.concat(leadingZeros, originalChars).toArray(Character[]::new);

System.out.println(Arrays.toString(newNumber2));

输入 1:

char[] number1 = {'1','1','1','1'};
char[] number2 = {'2','2'};

输出 1:

[0, 0, 2, 2]

输入 2:

char[] number1 = {'1','1','1','1'};
char[] number2 = {'2','2', '2', '2', '2'};

输出 2:

[2, 2, 2, 2, 2]

【讨论】:

  • 谢谢,我可以使用内置函数等,但我用另一种方式做了,但非常感谢
猜你喜欢
  • 2013-11-29
  • 2011-07-23
  • 1970-01-01
  • 2023-04-02
  • 1970-01-01
  • 1970-01-01
  • 2011-03-17
  • 1970-01-01
相关资源
最近更新 更多