2017-06-17 9 views
-2

文字列を返すようにしていますが、文字列は関数ではなくメインクラスに出力されます。文字列を連結してJavaのメインに戻る方法

入力された数字に応じて文字列が拡大し続けるように、出てくるすべての文字に文字列を連結しようとしました。

public class Main { 

    public static void main(String[] args) { 
     Diamond print = new Diamond(); 
     output = print.print(5); 
     System.out.print(output); 
    } 
} 
class Diamond { 
    public static String print(int n) { 
     String concat = ""; 

     if(!(n % 2 == 0)) { 
      for (int i = 1; i < n; i += 2) { 
       for (int k = n; k >= i; k -= 2) { 
        System.out.print(" "); 
        concat = concat.(" ");//what i am trying to do :(
       } 
       for (int j = 1; j <= i; j++) { 
        System.out.print("*"); 
        concat = concat.("*"); 
       } 
       concat = concat.("\n"); 
       System.out.println(); 
      }// end loop 

      for (int i = 1; i <= n; i += 2) { 
       for (int k = 1; k <= i; k += 2) { 
        System.out.print(" "); 
       } 
       for (int j = n; j >= i; j--) { 
        System.out.print("*"); 
       } 
       System.out.println(); 
      }// end loop 
     } 
     return concat; 
    } 
} 
+0

あなたの質問は? –

+0

'String concat'を' StringBuilder sb'に変更し、 'sb.append(...)'で末尾に 'sb.toString()'を返します。 – janos

+0

@JoeC Javaでメインに戻るために文字列を連結するには – learningbyexample

答えて

0

CONCAT()メソッド

String str = ""; 
str = str.concat("blabla"); 

を使用しますが、あなたの変数名は連結であることから、このようにします:

...

String concat = ""; 
concat = concat.concat("blabla"); 

しかし、StringBufferのを使用して優れています

StringBuffer sb = new StringBuffer(); 

sb.append("blabla"); 

次に出力用次のように書いて文字列を返します。sb.toString();

+0

この場合、 'StringBuffer'の代わりに' StringBuilder'が推奨されます。実際、 'StringBuffer'は非常にめったに必要ありません。 [javadoc](https://docs.oracle.com/javase/7/docs/api/java/lang/StringBuffer.html)の説明の最後の段落を参照してください。 – janos

関連する問題