15

我想知道是否有人可以帮助我理解为什么我的数组结果不是一行。下面代码的结果打印为:

[
1
2
3
4
5
6
7
8
9
10
]

而不是[1 2 3 4 5 6 7 8 9 10].

关于我做错了什么结果没有上线的任何想法?

class RangeClass {

    int[] makeRange(int lower, int upper) {
      int arr[] = new int[ (upper - lower) + 1 ];

      for(int i = 0; i < arr.length; i++) {
        arr[i] = lower++;
      }
      return arr;
    }

    public static void main(String arguments[]) {
    int theArray[];
    RangeClass theRange = new RangeClass();

    theArray = theRange.makeRange(1, 10);
    System.out.println("The array: [ ");
    for(int i = 0; i< theArray.length; i++) {
      System.out.println(" " + theArray[i] + " ");
    }
    System.out.println("]");
    }
}   
4

9 回答 9

49

您可以使用较短的版本:

int theArray[] = {1, 2, 3};
System.out.println(java.util.Arrays.toString(theArray));
于 2013-05-15T12:05:00.767 回答
6

像这样替换System.out.printlnSystem.out.print

System.out.print("The array: [ ");
for(int i = 0; i< theArray.length; i++) {
  System.out.print(" " + theArray[i] + " ");
}
System.out.println("]");

println在您刚刚打印的内容的末尾添加一个行分隔符。

于 2013-05-15T12:04:29.643 回答
5

您可以使用Java 8在一行中完成此操作

假设你有这个整数列表

List<Integer> lst = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8 ,9);

您可以通过这种方式一次性打印所有项目

lst.forEach(nb -> System.out.print(nb + " "));

或者以这种方式

lst.forEach(System.out::print);

结果

1 2 3 4 5 6 7 8 9
于 2017-02-07T14:58:07.833 回答
4

int []arr = {3, 4, 1, 7, 8, 5, 4, 11, 33, 21, 17, 15};

System.out.print(Arrays.toString(arr).replace("[","").replace("]", "").replace(",", ""));

于 2016-11-29T11:02:18.863 回答
3

使用 System.out.print 而不是 System.out.println

于 2013-05-15T12:04:33.787 回答
1
for(int i = 0 ; i < theArray.length;i++){
 if(i==0)
   System.out.print("["+theArray[i]);
 else if(i==theArray.length-1)
   System.out.print(","+theArray[i]+"]");
 else
   System.out.print(","+theArray[i]);
}

输出:(例如)

[1,2,5,3,7]

于 2013-05-15T12:08:44.943 回答
1

只需对您的代码进行一点小改动:

class ArrayDemo {

  int[] makeRange(int lower, int upper) {
    int arr[] = new int[ (upper - lower) + 1 ];

    for(int i = 0; i < arr.length; i++) {
      arr[i] = lower++;
    }
    return arr;
  }

  public static void main(String arguments[]) {
    int theArray[];
    ArrayDemo theRange = new ArrayDemo();

    theArray = theRange.makeRange(1, 10);
    System.out.print("The array: [ ");  //Remove println here
    for(int i = 0; i< theArray.length; i++) {
      System.out.print(" " + theArray[i] + " "); //Same here
    }
    System.out.println("]");
  }
}

输出数组:[ 1 2 3 4 5 6 7 8 9 10 ]

于 2018-01-02T06:53:00.767 回答
0

在所有代码中使用 System.out.print() 代替 System.out.println() 因为如果您使用 System.out.println() 每次在控制台上的输出之后都会打印一个换行符调用但如果您使用 System.out.print() 它将打印您作为参数传递的内容。所以将您的代码更改为

class RangeClass {
    int[] makeRange(int lower, int upper) {
        int arr[] = new int[ (upper - lower) + 1 ];
        for(int i = 0; i < arr.length; i++) {
            arr[i] = lower++;
        }
        return arr;
    }

    public static void main(String arguments[]) {
        int theArray[];
        RangeClass theRange = new RangeClass();

        theArray = theRange.makeRange(1, 10);
        System.out.print("The array: [ ");
        for(int i = 0; i< theArray.length; i++) {
            System.out.print(" " + theArray[i] + " ");
        }
        System.out.print("]");
    }
}
于 2013-05-15T12:39:33.483 回答
0

System.out.println在打印语句后更改行。这就是为什么您的数组元素没有排成一行的原因。尝试System.out.print改用,这样就可以了。

于 2013-05-15T12:07:42.063 回答