2017-12-13 15 views
1

私は自分のJava割り当てに嫌な人になります。私はむしろメソッドの新しさと私はこの1つの周りに私の頭を得るように見えることはできません。おそらく私に指導の手を差し伸べることができますか?Arrays.toString、no library

intの配列を文字列に変換しようとしています。
toString方法。私たちはいくつかの図書館を使うことは許されません。

public static void main(String[] args) { 
    int[] arr = {3,4,5,6,7}; 

    String str = toString(arr); 
    System.out.println("arr = " + str); 
} 

private static String toString(int[] arr) { 
    String str = Arrays.toString(arr); 
    return str; 
} 

これは、これまでの私のプログラムの完全なコードは次のとおりです:私は私のコードから得るすべては'stack overflow'...

コードです

public class Arrays { 

public static void main(String[] args) { 
    int[] arr = {3,4,5,6,7}; 

    int result = sum(arr); 
    System.out.println(result); 

    String str = toString(arr); 
    System.out.println("arr = " + str); 
} 

private static int sum(int[] arr) { 
    int result = 0; 
    for (int i = 0; i < arr.length; i++) { 
     result += arr[i]; 
    } 
    return result; 
} 

private static String toString(int[] arr) { 
    String str = Arrays.toString(arr); 
    return str; 
} 


} 

私のコンソールでの結果:

25 
Exception in thread "main" java.lang.StackOverflowError 
    at tb222kc_lab3.Arrays.toString(Arrays.java:24) 
    at tb222kc_lab3.Arrays.toString(Arrays.java:24) 
    at tb222kc_lab3.Arrays.toString(Arrays.java:24)..... 
+0

スタックオーバーフローを生成するコードを表示しますか? :) – xs0

+0

[それは私とうまくいく](https://ideone.com/oaTa03) –

+0

質問は、データ型をそのまま使用して配列を印刷しようとしているのか、それとも積極的に各要素を変換しようとしていますか配列内の特定のデータ型に? – Makoto

答えて

2

として、あなたのクラスを命名しているので、あなたのコードでは、再帰呼び出しに入った:

public String toString(int[] arr) { 
    StringBuilder result = new StringBuilder(); 
    result.append("["); 
    for (int a : arr) { 
     result.append(a); 
    } 
    result.append("]"); 
    return result.toString(); 
} 
+0

Thomasの教授がStringBuilderをライブラリとして数えるかどうかわかりません... –

+0

ライブラリは何ですか@JamesDunnを定義してください。 –

+0

まあ、いくつかの方法があるかもしれません...技術的にはjava.langはライブラリです(ただし、Stringは数えきれないでしょう...)StringBuilderはライブラリとしてカウントされてもカウントされなくても問題はありませんThomas Bengtssonの教授です。教授はライブラリを拒否するのは難しいですから、教授がStringBuilderについて何を言うのかは誰に分かりますか?私は個人的にはそれでうまくいくと思うが、私はこの教授の人については知らない。あなたの答えが好きなので、私はそれをアップした。 –

8

Arrays.toString(arr)toStringに変更する方法java.util.Arrays.toString(arr)

あなたはその後、私はこのような自分のtoStringを作成しますArrays

+0

ありがとうございますが、ライブラリを呼び出すでしょう。 ?この割り当てにライブラリを使用することは許可されていません。 –

+0

@YCF_Lそれでは、その周りに道はありませんか?私たちは使用するクラスの名前を持っています... –

1

あなたのtoString()メソッドは次のようになります。

private static String toString(int[] arr) { 
    String str = "["; 
    for (int index = 0; index < arr.length; index++) { 
     // Concat the string with the int value. 
     str += arr[index]; 

     // Add delimiter only if we're not at the last index. 
     if (index < arr.length - 1) { 
      str += ", "; 
     } 
    } 
    str += "]"; 
    return str; 
} 

これに加えて、大学の教授は、実生活(図書館を使わないなど)。

+0

あなたのコメントについては、ライブラリーを制限することなく特定のスキルを養成することを目的とした良い**と短期の宿題が本当に難しいです使用法。独自のLinkedListを実装するタスクは、実装が既に存在するため、悪いと思いますか?不思議なことに、私は一般的にプログラミングプログラミングに関するこれらの種類の声明に同意し、人々からより多くの音源を集めることを望んでいたので、 – Fureeish

+0

@Fureeishいいえ、それは悪いとは思わない。実際には、上の私のジャブにもかかわらず、それは良い割り当てです。実際、私は私のバイアスの帽子を取り除いたので... :)いいえ、このような割り当てを与えるのは理にかなっています。実際、もし私がコーディングの教授だったら、初めは初めにそれをやるでしょう。基本的なタスクをコーディングできるスキルを持つことは、人々にとって良いことです。私はジャブがどこに来るのかと思います。実生活では、誰かがあなたのためにコードを書いているときに、ホイールを作り直すべきではありません。 "作業現場でのコラボレーションは学者にとって不正です。" :P –

+0

私は教授であれば、実生活でもっとライブラリを使う方が良いと強調していますが、プログラムを学ぶ目的では使用しないこの割り当てのための任意のもの。 –