打印java数组最简单的方法是什么?

4xrmg8kj  于 2021-07-06  发布在  Java
关注(0)|答案(30)|浏览(471)

在java中,数组不重写 toString() ,因此,如果您尝试直接打印一个,您将得到 className +“@”+的十六进制 hashCode 数组的 Object.toString() :

int[] intArray = new int[] {1, 2, 3, 4, 5};
System.out.println(intArray);     // prints something like '[I@3343c8b3'

但通常我们想要的是 [1, 2, 3, 4, 5] . 最简单的方法是什么?以下是一些输入和输出示例:

// Array of primitives:
int[] intArray = new int[] {1, 2, 3, 4, 5};
//output: [1, 2, 3, 4, 5]

// Array of object references:
String[] strArray = new String[] {"John", "Mary", "Bob"};
//output: [John, Mary, Bob]
raogr8fs

raogr8fs16#

打印数组有以下几种方法

// 1) toString()  
    int[] arrayInt = new int[] {10, 20, 30, 40, 50};  
    System.out.println(Arrays.toString(arrayInt));

// 2 for loop()
    for (int number : arrayInt) {
        System.out.println(number);
    }

// 3 for each()
    for(int x: arrayInt){
         System.out.println(x);
     }
whitzsjs

whitzsjs17#

从Java8开始,还可以利用 join() string类提供的用于打印数组元素的方法,不带括号,并由所选分隔符分隔(以下示例中的空格字符):

String[] greeting = {"Hey", "there", "amigo!"};
String delimiter = " ";
String.join(delimiter, greeting)

输出将是“嘿,朋友!”。

qmb5sa22

qmb5sa2218#

您可以在数组中循环,在循环时打印出每个项。例如:

String[] items = {"item 1", "item 2", "item 3"};

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

    System.out.println(items[i]);

}

输出:

item 1
item 2
item 3
sh7euo9m

sh7euo9m19#

可以选择使用org.apache.commons.lang3.stringutils.join(*)方法
例如:

String[] strArray = new String[] { "John", "Mary", "Bob" };
String arrayAsCSV = StringUtils.join(strArray, " , ");
System.out.printf("[%s]", arrayAsCSV);
//output: [John , Mary , Bob]

我使用了以下依赖项

<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.3.2</version>
kuarbcqp

kuarbcqp20#

for each循环还可以用于打印数组的元素:

int array[] = {1, 2, 3, 4, 5};
for (int i:array)
    System.out.println(i);
l5tcr1uw

l5tcr1uw21#

在java中打印数组的不同方法:
简单的方法

List<String> list = new ArrayList<String>();
list.add("One");
list.add("Two");
list.add("Three");
list.add("Four");
// Print the list in console
System.out.println(list);

输出:[一,二,三,四]
使用 toString() ```
String[] array = new String[] { "One", "Two", "Three", "Four" };
System.out.println(Arrays.toString(array));

输出:[一,二,三,四]
打印数组

String[] arr1 = new String[] { "Fifth", "Sixth" };
String[] arr2 = new String[] { "Seventh", "Eight" };
String[][] arrayOfArray = new String[][] { arr1, arr2 };
System.out.println(arrayOfArray);
System.out.println(Arrays.toString(arrayOfArray));
System.out.println(Arrays.deepToString(arrayOfArray));

输出:[[ljava.lang.string@1ad086a[[ljava.lang.string@10385c1,[ljava.lang.string@42719c][[第五,第六],[第七,第八]]
资源:访问阵列
2g32fytz

2g32fytz22#

这里有一个可能的打印功能:

public static void printArray (int [] array){
        System.out.print("{ ");
        for (int i = 0; i < array.length; i++){
            System.out.print("[" + array[i] + "] ");
        }
        System.out.print("}");
    }

例如,如果main是这样的

public static void main (String [] args){
    int [] array = {1, 2, 3, 4};
    printArray(array);
}

输出将是{[1][2][3][4]}

yk9xbfzb

yk9xbfzb23#

for(int n: someArray) {
    System.out.println(n+" ");
}
nle07wnf

nle07wnf24#

数组.tostring

作为一个直接的答案,包括@esko在内的几个公司提供的解决方案 Arrays.toString 以及 Arrays.deepToString 方法,简直就是最好的。

java 8-stream.collect(joining()),stream.foreach

下面我试着列出一些建议的其他方法,试图稍加改进,最值得注意的是使用 Stream.collect 运算符,使用
joining Collector ,来模仿 String.join 他在做什么。

int[] ints = new int[] {1, 2, 3, 4, 5};
System.out.println(IntStream.of(ints).mapToObj(Integer::toString).collect(Collectors.joining(", ")));
System.out.println(IntStream.of(ints).boxed().map(Object::toString).collect(Collectors.joining(", ")));
System.out.println(Arrays.toString(ints));

String[] strs = new String[] {"John", "Mary", "Bob"};
System.out.println(Stream.of(strs).collect(Collectors.joining(", ")));
System.out.println(String.join(", ", strs));
System.out.println(Arrays.toString(strs));

DayOfWeek [] days = { FRIDAY, MONDAY, TUESDAY };
System.out.println(Stream.of(days).map(Object::toString).collect(Collectors.joining(", ")));
System.out.println(Arrays.toString(days));

// These options are not the same as each item is printed on a new line:
IntStream.of(ints).forEach(System.out::println);
Stream.of(strs).forEach(System.out::println);
Stream.of(days).forEach(System.out::println);
pzfprimi

pzfprimi25#

总是先检查标准库。

import java.util.Arrays;

然后尝试:

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

或者如果您的数组包含其他数组作为元素:

System.out.println(Arrays.deepToString(array));
7ajki6be

7ajki6be26#

在java 8中:

Arrays.stream(myArray).forEach(System.out::println);
jgovgodb

jgovgodb27#

java 8之前

我们本可以用 Arrays.toString(array) 打印一维数组 Arrays.deepToString(array) 对于多维数组。

java 8

现在我们可以选择 Stream 以及 lambda 打印数组。
打印一维数组:

public static void main(String[] args) {
    int[] intArray = new int[] {1, 2, 3, 4, 5};
    String[] strArray = new String[] {"John", "Mary", "Bob"};

    //Prior to Java 8
    System.out.println(Arrays.toString(intArray));
    System.out.println(Arrays.toString(strArray));

    // In Java 8 we have lambda expressions
    Arrays.stream(intArray).forEach(System.out::println);
    Arrays.stream(strArray).forEach(System.out::println);
}

输出为:
[1, 2, 3, 4, 5]
[约翰,玛丽,鲍勃]
1
2

4
5
厕所
玛丽
鲍勃
打印多维数组只是为了万一我们想打印多维数组我们可以使用 Arrays.deepToString(array) 作为:

public static void main(String[] args) {
    int[][] int2DArray = new int[][] { {11, 12}, { 21, 22}, {31, 32, 33} };
    String[][] str2DArray = new String[][]{ {"John", "Bravo"} , {"Mary", "Lee"}, {"Bob", "Johnson"} };

    //Prior to Java 8
    System.out.println(Arrays.deepToString(int2DArray));
    System.out.println(Arrays.deepToString(str2DArray));

    // In Java 8 we have lambda expressions
    Arrays.stream(int2DArray).flatMapToInt(x -> Arrays.stream(x)).forEach(System.out::println);
    Arrays.stream(str2DArray).flatMap(x -> Arrays.stream(x)).forEach(System.out::println);
}

现在要注意的是 Arrays.stream(T[]) ,如果 int[] 返回我们 Stream<int[]> 然后是方法 flatMapToInt() 将流的每个元素与通过将提供的Map函数应用于每个元素而生成的Map流的内容进行Map。
输出为:
[[11, 12], [21, 22], [31, 32, 33]]
【约翰,好极了】【玛丽,李】【鲍勃,Json】】
11
12
21
22
31
32
33
厕所
好极了
玛丽

鲍勃
Json

i7uaboj4

i7uaboj428#

在jdk1.8中,可以使用聚合操作和lambda表达式:

String[] strArray = new String[] {"John", "Mary", "Bob"};

// #1
Arrays.asList(strArray).stream().forEach(s -> System.out.println(s));

// #2
Stream.of(strArray).forEach(System.out::println);

 // #3
 Arrays.stream(strArray).forEach(System.out::println);

/* output:
John
Mary
Bob

* /

另外,从Java8开始,还可以利用string类提供的join()方法打印出数组元素,不使用括号,并用所选的分隔符(下面示例中的空格字符)分隔

string[] greeting = {"Hey", "there", "amigo!"};
String delimiter = " ";
String.join(delimiter, greeting)

`输出将是“嘿,朋友!”

4c8rllxm

4c8rllxm29#

我尝试过的一个简化的快捷方式是:

int x[] = {1,2,3};
    String printableText = Arrays.toString(x).replaceAll("[\\[\\]]", "").replaceAll(", ", "\n");
    System.out.println(printableText);

它会打印出来

1
2
3

这种方法不需要循环,最好只用于小型阵列

e7arh2l6

e7arh2l630#

public class printer {

    public static void main(String[] args) {
        String a[] = new String[4];
        Scanner sc = new Scanner(System.in);
        System.out.println("enter the data");
        for (int i = 0; i < 4; i++) {
            a[i] = sc.nextLine();
        }
        System.out.println("the entered data is");
        for (String i : a) {
            System.out.println(i);
        }
      }
    }

相关问题