簡體   English   中英

如何使用非空方法打印字符串數組?

[英]How to print a String array using a non-void method?

所以我應該寫一個方法來打印數組的元素。 這是我的方法:

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

這段代碼有效,但是教授說我們必須使用此方法返回String,而我不知道該怎么做。 我試過了:

 public static String join(String phrase[])
  {
    for (int i = 0; i < phrase.length; i++)
    {
      String sentence = System.out.print(phrase[i] + " ");
      return sentence;
    }
  }
Error: incompatible types: void cannot be converted to java.lang.String

我知道我不能使用.print,因為該方法不是無效的。 但是,我該如何打印?

有任何想法嗎? 這是Java初學者課程,所以我不知道其他方式。

這也將起作用:

public static String join(String phrase[])
  {
    String sentence = "";
    for (int i = 0; i < phrase.length; i++)
    {
      sentence += phrase[i] + " ";
    }
    return sentence;
  }

這是我在做什么:

1)在for循環外創建一個空字符串,該字符串將用於保存數組的所有值

2)將數組的每個元素(后跟一個空格添加到帶有sentence += phrase[i] + " ";的字符串中sentence += phrase[i] + " ";

3)一旦for循環將所有元素添加到字符串中,就返回它!

  1. System.out.println返回void

您不能將void分配給String變量。 您只想分配串聯的值,而不打印它。

String sentence = phrase[i] + " "
  1. 您在每次迭代中聲明sentence

您需要連接每個單元格,因此請在循環之前聲明一個變量,然后將String附加到循環中

String sentence = "";
for (int i = 0; i < phrase.length; i++){
    sentence +=  phrase[i] + " "; //same as sentence = sentence + phrase[i] + " ";
    return sentence;
}
  1. 您在循環內返回一個值...

循環將在return處結束,因此String僅存在第一個值。 僅在循環完成后才返回值。

String sentence = "";
for (int i = 0; i < phrase.length; i++){
    sentence +=  phrase[i] + " ";
}
return sentence;

僅供參考:在相同的問題中,如果數組為空,則不會返回任何值,因此也會出現問題,因為方法在每種情況下均應返回String (或引發異常)。

較短的解決方案:

從Java 8開始,可以使用String.join完成此循環

return String.join(" ", phrase);

請執行以下操作:

public static String join(String phrase[]){
    StringBuilder str = new StringBuilder();
    for(String s: phrase){
        str.append(s);
    }
    System.out.println(str);
    return str.toString();
  }

不要使用+ =並將字符串數組的值添加到另一個字符串,因為每次將新字符串添加到預處理字符串時,它將創建一個新對象。 相反,使用StringBuilder可以提高內存效率。

您還可以執行以下操作:

public static String join(String phrase[]){
    String str = Arrays.toString(phrase);
    System.out.println(str);
    return str;
}

這將打印每個元素並返回整個結果:

public static String printElements(String phrase[]) {
    String result = "";
    for (int i = 0; i < phrase.length; i++)
    {
        System.out.print(phrase[i] + " ");
        result += phrase[i];     
        if( i != phrase.length - 1)
        {
            result += " ";
        }

    }
        return result;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM