如何打印出数组所代表的负数

时间:2014-06-27 11:58:54

标签: java arrays stringbuilder

我刚刚开始学习Java,我想尝试使用数组来表示大的负数。

我们说我有一个数组

[-2, 0, -5] and this represents the number -502

我尝试过使用StringBuilder,但打印出来

-50-2

这是我现在的代码。有没有办法让它可以附加第一个底片,然后在构建新String时跳过其余的底片?

    StringBuilder sb = new StringBuilder();

    for(int x = arr.length-1; x>=0; x--){
        sb.append(arr[x]);
    }
    String check = sb.toString();
    System.out.println(check);

5 个答案:

答案 0 :(得分:5)

使用最后一个字符(带有适当的符号)初始化字符串缓冲区,然后忽略其余的符号。

StringBuilder sb = new StringBuilder();
sb.append(arr[length-1]);

for (int x = arr.length-2; x>=0; x--) {
    sb.append(Math.abs(arr[x]));
}
String check = sb.toString();
System.out.println(check);

答案 1 :(得分:1)

在字符串的开头添加一个减号,并在附加时使用Math.abs(arr[x])

它应该是这样的:

StringBuilder sb = new StringBuilder();

sb.append("-");
for(int x = arr.length-1; x>=0; x--){
   sb.append(Math.abs(arr[x]));
}
String check = sb.toString();

答案 2 :(得分:1)

是的,当然。你的问题不清楚,但我认为这样做你想要的:

if(x == arr.length-1 || x > 0)
    sb.append(arr[x]);
else
    sb.append(-arr[x]);

-取消了。 -(-5)只是5。

或者:(这可能会或可能不会更容易理解)

if(x == arr.length-1)
    sb.append(arr[x]);
else
    sb.append(Math.abs(arr[x]));

Math.abs是一种确保数字不是负数的方法 - 如果您给出的数字是正数或零,则返回它。如果您给出的数字是负数,则返回正数。

可替换地:

sb.append((x == arr.length - 1) ? arr[x] : Math.abs(arr[x]));

这只是之前建议的“简写”。

答案 3 :(得分:1)

试试这个

          StringBuilder sb = new StringBuilder();
      Integer[] arr = new Integer[10];        
      if(arr[arr.length-1]<0)
          sb.append("-");
      for(int x = arr.length-1; x>=0; x--){
            sb.append(Math.abs(arr[x]));              
      }
      String check = sb.toString();
      System.out.println(check);

答案 4 :(得分:0)

要在这种情况下“跳过剩余的负数”,请按“原样”取第一个负数,并在追加它们之前取剩余负数的绝对值。使用Math.abs(arr[x])调用取绝对值。这样字符串构建器会查看您的数组,取-5,然后看到“02”,因为它附加了以下整数。

现在,如果要求你想要一个可能更长阵列的最大负数,比如说[-5,-3,2,6],你希望它返回-5632 ...从最小的负数开始number(-5)作为要追加的第一个数字,您可以使用原始数组的所有剩余值的绝对值创建一个新数组。然后逐步获取数组的最大未使用值。