【问题标题】:Print an array in String without using Array.toString in Java在 Java 中不使用 Array.toString 打印 String 中的数组
【发布时间】:2020-11-22 10:55:32
【问题描述】:

我正在尝试使用 Arrays.toString 函数以 String 形式打印一个确定的数组,而不使用 Arrays.toString 函数。我尝试过的是以下内容,但事实证明找不到 toString 方法,我真的不知道我错过了什么。我很难理解 Java 背后的整个思考过程,所以如果你能详细解释一下每一步发生了什么,那就太好了。提前非常感谢!

class RandomIntArray { 
public static String toString(int[] a) {
       int[] array = {1, 2, 3, 4};
       System.out.print("[" + array[0]);
       for (int i = 1; i < array.length; i++) {
       System.out.print(", " + a[i]);
       System.out.println("]");
           }
    }
       public static void main (String[]args){
            System.out.println(toString[i]);
        }
    }

【问题讨论】:

  • 你对数组arraya之间的理解有误。此外,您不调用方法 toString,而是尝试像数组一样访问它

标签: java arrays string


【解决方案1】:

问题

  • toString[i] 不是方法调用(toString() 是),括号[] 用于数组访问
  • 您对数组arraya 有误解
  • 您的方法 toString 必须返回 String 但您什么也不返回,并且在方法本身内打印所有内容

解决方案

  • 初始数组必须在main中定义,并传递给方法
  • 方法toString 必须构建一个String 并返回它
public static String toString(int[] a) {
    StringBuilder sb = new StringBuilder("[" + a[0]);
    for (int i = 1; i < a.length; i++) {
        sb.append(", ").append(a[i]);
    }
    return sb.append("]").toString();
}

public static void main(String[] args) {
    int[] array = {1, 2, 3, 4};
    System.out.println(toString(array));
}

改进:处理空数组

最好把所有的数组访问都放到循环中,因为万一数组为空,前面的代码会在a[0]失败

public static String toString(int[] a) {
    String join = "";
    StringBuilder sb = new StringBuilder("[");
    for (int val : a) {
        sb.append(join).append(val);
        join = ", ";
    }
    return sb.append("]").toString();
}

例子

System.out.println(toString(new int[]{1, 2, 3, 4})); // [1, 2, 3, 4]
System.out.println(toString(new int[]{}));           // []

【讨论】:

  • 值得添加检查 1) 是否为空; 2) 包含a[0] 之前的数组长度以打印[] 为空数组:)
  • @AlexRudenko 我刚刚改变了,一秒钟前 :)
  • 非常感谢您的解释!很抱歉打扰您,但我真的很难理解 Java 的思考过程:我有一个关于您的解决方案的主要问题:您在开始时使用“sb”所做的是创建一个连接“ [" 符号和给定数组的第一个参数对吗?并且 for 沿着数组移动,直到到达最后一个元素,同时添加逗号。对吗?
猜你喜欢
  • 1970-01-01
  • 2021-11-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多