【问题标题】:Java - Calling a method that returns a string of ints from an arrayJava - 调用从数组中返回整数字符串的方法
【发布时间】:2013-11-03 19:51:36
【问题描述】:

我正在使用一个程序,在该程序中我需要使用方法调用从 int 数组中返回一个字符串。到目前为止,这就是我所拥有的方法(我需要使用带有此标头和参数的方法)

    public String toString()
{
for (int i=0;i<NUM_POCKETS;i++)
    {
    this.getPocketCount(i);
    }
}

我基本上需要循环遍历我所有的“口袋”(数组项)并将存储的值返回到要返回的字符串中。

我可能遗漏了一些非常明显的东西,但对于我来说,我不明白这些信息将如何存储并作为字符串返回给驱动程序。我知道循环逻辑在那里,但是随着循环的进行,如何将 i 的每个增量存储到 String 中?

提前感谢您的帮助!

【问题讨论】:

标签: java arrays eclipse string methods


【解决方案1】:

I am working with a program in which I need to use a method call to return a String from an int array.

如果这不是作业问题,您可以简单地使用Arrays.toString(int[] array)

String myString = Arrays.toString(myIntArray);

否则,也许你可以这样做:

String getStringFromIntArray(int[] array) {
  StringBuilder builder = new StringBuilder();
  for (int num : array)
    builder.append(num)
  return builder.toString();
}

【讨论】:

  • 这将是“Java”的方式。 OP 可能正在寻找“了解通用编程”的方式。
  • 好吧,他没有说这是家庭作业或其他什么,所以我认为他可以这样做。
【解决方案2】:

尝试查看 StringBuilder 类。 Java 6 的规范在这里。

http://docs.oracle.com/javase/6/docs/api/java/lang/StringBuilder.html

您需要一个 StringBuilder 对象,然后使用 .append() 函数将值附加到该对象。

【讨论】:

  • 这确实是最优雅的解决方案之一,仅次于Arrays.toString(...)。特别是如果您想添加更多信息,这应该是首选的解决方案。
【解决方案3】:

只要this.getPocketCount(i); 为您提供位置 i 上的数组值:

public String toString() {
    String returnstring= "";    //init empty string
    for (int i = 0; i < NUM_POCKETS; i++) {
        returnstring += this.getPocketCount(i)+" "; //append(concat) to string
    }
    returnstring = returnstring.substring(0, returnstring.length()-1);  //remove the last " "
    return returnstring;    //return string
}

+ 符号附加下一个字符串 "Hello"+" "+"World" 变为 "Hello World"

编辑:

public String toString() {
    String returnstring= "";    //init empty string
    for (int i = 0; i < NUM_POCKETS-1; i++) { //-1 to place last later
        returnstring += this.getPocketCount(i)+" "; //append to string
    }
    returnstring += this.getPocketCount(NUM_POCKETS-1)  //append the last value
    return returnstring;    //return string
}

【讨论】:

  • 如果不使用外部工具,这将是一个很好的解决方案。如果您不查看最后一个元素或其他内容,也许只添加空格。
  • 这会导致很多 if 语句...我会以更好的方式修复它
【解决方案4】:

假设您特别想从循环中构建您的字符串,您可以使用StringBuilder。它比Arrays.toString() 提供的单行更冗长,但你要求它:

例如

public String toString() {
    StringBuilder sb = new StringBuilder(NUM_POCKETS);
    for (int i = 0; i < NUM_POCKETS; i++) {
        sb.append(this.getPocketCount(i));
    }
    return sb.toString();
}

在循环中使用StringBuilder 比执行每个单独元素的串联要快。见:when to use StringBuilder in java

【讨论】:

    猜你喜欢
    • 2021-04-26
    • 1970-01-01
    • 1970-01-01
    • 2015-06-09
    • 2016-05-19
    • 2014-06-30
    • 2011-10-14
    • 2021-03-11
    • 2015-09-17
    相关资源
    最近更新 更多