问题描述
我正在尝试在标签清晰的输出演示文稿中打印一维数组。我有一个不带任何参数来打印一维数组的方法,到目前为止,我已经创建了一个for循环,用于打印从id [0]到id [n-1]的数组内容。我要完成的主要任务是在我的main方法中,我将该方法显示3次数组。输出需要明确定义每个调用的结果。示例:A部分的结果:(43,45,43,4,5,)。我应该使用printf还是应该解决该问题。尝试在此网站上查看了一段时间,但找不到足够具体的信息来提供帮助。
到目前为止,我有
public void displaySubsets(){
for(int i : array) {
System.out.print("(");
System.out.print(array[i]);
System.out.print(")");
}
解决方法
您可以执行以下操作:
System.out.println(Arrays.toString(array));
,或者如果您想自己滚动。 (假设数组不为空或为null)。
System.out.print("(" + array[0]);
for (int i = 1; i < array.length; i++) {
System.out.print("," + array[i]);
}
System.out.println(")");
,
这是一种实现方式:
遍历数组,将数字串联到一个新的字符串变量中。
static void printArray(){
String printFormat = "";
System.out.println("Array Length: " + array.length);\
//iterate over the array
for (int i=0; i < array.length; i++) {
if (i+1 == array.length){
//If is the last value in the array we don't want to add the ","
//concatenate the array's value into a new string without ","
printFormat = printFormat + array[i];
}else{
//concatenate the arrays value into a new string
printFormat = printFormat + array[i] +",";
}
}
System.out.println("Results for part A : (" + printFormat + ")");
}
,
有多种方法可以实现:
我会选择我们的朋友“ Java 8 Streams”,更具体地说是Arrays类的stream()方法。它使它优雅,直观,高效。
package com.example;
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
int arr[] = { 43,45,43,4,5 };
System.out.print("(");
Arrays.stream(arr)
.forEach( e -> System.out.print(e + ",") );
System.out.println(")");
}
}
,输出:(43,5,)
有很多方法可以解决这个问题。
替代1
可以做到这一点的一种方法就是:
System.out.println(Arrays.toString(array));
像其他提到的那样。
替代2
public static void main(String[] args) {
Main main = new Main();
int array[] = {43,5};
System.out.println(main.printArray(array));
}
public String printArray(int[] array){
StringBuilder builder = new StringBuilder();
builder.append("(");
for(int i : array){
builder.append(i);
builder.append(",");
}
builder.append(")");
return builder.toString();
}
我喜欢在打印时使用StringBuilder,因为它比执行System.out.println()更快。
希望它有用!