2017-01-21 8 views
0

私はリストを学生の姓で昇順に並べ替えてリストを表示しようとしていますが、nullを返す[、]を削除したいと思います。私はそれを見ることができない方法がありますか?角かっこ[]とコンマを削除するJava

import java.util.ArrayList; 
import java.util.Collections; 
import java.util.List; 

public class StudentTest { 

    public static void main(String args[]) { 
     List<Student> list = new ArrayList<Student>(); 



     list.add(new Student(" Gracia", "50","\tCOP2250, COP3250, COP4250")); 
     list.add(new Student(" Jones", "30", "\tCOP1210, COP3337, COP3530")); 
     list.add(new Student(" Smith", "10", "\tCOP2250, COP3250, COP4250")); 
     list.add(new Student(" Wilson", "20", "\tWNC1105, ENC3250, REL2210")); 
     list.add(new Student(" Braga", "10", "\tENC1105, ENC3250, ISO4250")); 
     list.add(new Student(" Adams", "20", "\tWNC1105, ENC3250, REL2210")); 
     list.add(new Student(" Giron", "60","\tCOP1210, COP3337, COP3530")); 
     list.add(new Student(" O'Neal", "45","\tENC1105, ENC3250, REL2210")); 
     list.add(new Student(" Ervin", "40", "\tENC1105, COP3250, ISO4250")); 
     list.add(new Student(" Bourne", "70","\tCOP2250, ENC3250, COP3530")); 


     System.out.println(list); 
     Collections.sort(list); 
     System.out.println(list); 

    } 
} 

class Student implements Comparable<Student> { 


    public Student(String name, String id, String course) { 
     this.name = name; 
     this.id = id; 
     this.course = course; 
    } 

    public String getName() { 

     return name; 
    } 

    public void setName(String name) { 
     this.name = name; 
    } 

    public String getId() { 
     return id; 
    } 

    public void setId(String id) { 
     this.id = id; 
    } 

    public String getCourse() { 
     return course; 
    } 


    public Student(String course) { 
     this.course = course; 
    } 

    private String name; 
    private String id; 
    private String course; 



    @Override 
    public int compareTo(Student student) { 

     return name.compareTo(student.name); 

    } 


    @Override 
    public String toString() { 


     System.out.println("" + id + name + course); 

     return ""; 

    } 
} 

出力は、以下である:

10スミスCOP2250、COP3250、COP4250

20ウィルソンWNC1105、ENC3250、REL2210

10ブラガENC1105、ENC3250、ISO4250

20アダムスWNC1105、ENC3250、REL2210

60 GironのCOP1210、COP3337、COP3530

45オニールENC1105、ENC3250、REL2210

40アーヴィンENC1105、COP3250、ISO4250

70ボーンCOP2250、ENC3250、COP3530

[ 、、、、、、、、]

なぜこの行が表示されますか?あなたの助けのための

[、、、、、、、、、]

ありがとう!

+1

「私は[null]を返す[*]を削除しますか?」とはどういう意味ですか? – lexicore

+0

確かに、** list **配列を適切に反復処理します。 ** for **ループを使用してみてください。次のように – DevilsHnd

+0

出力である: 20アダムス\t WNC1105、ENC3250、REL2210 70ボーン\t COP2250、ENC3250、COP3530 10ブラガ\t ENC1105、ENC3250、ISO4250 40アーヴィン\t ENC1105、COP3250、ISO4250 60 Gironの\t COP1210、COP3337、 COP3530 50グラシア\t COP2250、COP3250、COP4250 30ジョーンズ\t COP1210、COP3337、COP3530 45オニール\t ENC1105、ENC3250、REL2210 10スミス\t COP2250、COP3250、COP4250 20ウィルソン\t WNC1105、ENC3250、RE – Mario

答えて

0

するときSystem.out.println(list);ArrayList.toString()メソッドの既定の実装を使用するだけで、[]内の値をコンマとスペースで区切って返します。 あなたはそこに3つのオプションがあります:あなた自身のリストを

  1. 反復をしている限り、それはそれはtoString()メソッドの実装のしているとして(個々の学生を印刷

  2. それとものためでReplaceAll()を使用することができます。一般的なケースのために"[" "]" ", "がリストelemenの内側で有効な文字を使用できますので、あなたがlist.toString()

から今最初のオプションを持っている文字列は、一般的には好ましいです。交換しないでください。 しかし、小文字の場合は、Student name, id or courseにそのような文字は存在しないと確信している場合は、それを行うことができます。

0

System.out.println(list)を使用すると、リストのデフォルト実装を使用してコンソールに何かを印刷しています。

デフォルトの実装はリストを反復し、各オブジェクトのtoStringを呼び出します。 Studentクラスでその関数をオーバーライドすることをお勧めしました。しかし、あなたはちょうど ""を返しています。デフォルトの実装では、新しいStringが作成されます。それは "["で始まります。リスト内のすべてのオブジェクトのtoStringメソッドの戻り値( "、"で区切られます)が続きます。それは "]"で終わります。あなたのtoStringメソッドは、空のString ""を返します。これは、デフォルトの実装を作成することを意味し、次の

public String toString() { 
    return "" + id + name + course ; 
} 

[、、、、、、、、、]

今、あなたのtoStringメソッドの戻り値を変更することができます

[50グラシアCOP2250、COP3250、COP4250、30ジョーンズCOP1210、CO:あなたは次のような出力が得られますたより

COP3250、COP3250、20 Wilson WNC1105、ENC3250、REL2210,10ブラガENC1105、ENC3250、ISO4250、20アダムスWNC1105、ENC3250、REL2210,60 Giron COP1210、COP3337、COP3530,45 O'Neal ENC1105、 ENC3250、REL2210、40アーヴィン・ENC1105、COP3250、ISO4250、70ボーンCOP2250、ENC3250、COP3530]

あなたはArrayListのから延び、独自のリストを書くことができcommatarsとブラケットを持ってしたくない場合は、または印刷する代わりにリストを反復処理します。

50グラシアCOP2250、COP3250、COP4250

30ジョーンズCOP1210、COP3337、COP3530

10スミスCOP2250、COP3250、COP4250:

for(Student s : list){ 
     System.out.println(s); 
    } 

は、その後、あなたは次のような出力が得られます

20ウィルソンWNC1105、ENC3250、REL2210

10ブラガENC1105、ENC3250、ISO4250

20アダムスWNC1105、ENC3250、REL2210

60 GironのCOP1210、COP3337、COP3530

45オニールENC1105、ENC3250、REL2210

40アービンENC1105、COP3250、ISO4250

70ボーンCOP2250、ENC3250、COP3530

0

あなたリスト ArrayListの配列を一覧表示するときに、角括弧を表示したくない場合は、単に使用しないでください。

System.out.println(list); 

を各配列要素を処理するために、あなたは配列を反復処理する必要がありたとえば、次のようになります。

for (int i = 0; i < list.size(); i++) { 
    System.out.println(list.get(i)); 
} 

大括弧はありません。

あなた)(メインメソッドのコードは次のようになります。今

public static void main(String args[]) { 
    List<Student> list = new ArrayList<>(); 

    list.add(new Student(" Gracia", "50", "\tCOP2250, COP3250, COP4250")); 
    list.add(new Student(" Jones", "30", "\tCOP1210, COP3337, COP3530")); 
    list.add(new Student(" Smith", "10", "\tCOP2250, COP3250, COP4250")); 
    list.add(new Student(" Wilson", "20", "\tWNC1105, ENC3250, REL2210")); 
    list.add(new Student(" Braga", "10", "\tENC1105, ENC3250, ISO4250")); 
    list.add(new Student(" Adams", "20", "\tWNC1105, ENC3250, REL2210")); 
    list.add(new Student(" Giron", "60", "\tCOP1210, COP3337, COP3530")); 
    list.add(new Student(" O'Neal", "45", "\tENC1105, ENC3250, REL2210")); 
    list.add(new Student(" Ervin", "40", "\tENC1105, COP3250, ISO4250")); 
    list.add(new Student(" Bourne", "70", "\tCOP2250, ENC3250, COP3530")); 

    for (int i = 0; i < list.size(); i++) { 
     System.out.println(list.get(i)); 
    } 

    Collections.sort(list); 

    System.out.println(""); 
    for (int i = 0; i < list.size(); i++) { 
     System.out.println(list.get(i)); 
    } 
} 

、@Leonはすでに彼のコメントの中に述べたように、あなたは間違っ内のあなたののtoString()メソッドを設定しているが学生クラス。データを表示するのではなく文字列として返す必要があります。あなたののtoString()メソッドは、次のようになります。

@Override 
public String toString() { 
    return id + name + course; 
} 

そしてそれは、物事の世話をする必要があります。あなたの出力は次のようになります:

50 Gracia COP2250, COP3250, COP4250 
30 Jones COP1210, COP3337, COP3530 
10 Smith COP2250, COP3250, COP4250 
20 Wilson WNC1105, ENC3250, REL2210 
10 Braga ENC1105, ENC3250, ISO4250 
20 Adams WNC1105, ENC3250, REL2210 
60 Giron COP1210, COP3337, COP3530 
45 O'Neal ENC1105, ENC3250, REL2210 
40 Ervin ENC1105, COP3250, ISO4250 
70 Bourne COP2250, ENC3250, COP3530 

20 Adams WNC1105, ENC3250, REL2210 
70 Bourne COP2250, ENC3250, COP3530 
10 Braga ENC1105, ENC3250, ISO4250 
40 Ervin ENC1105, COP3250, ISO4250 
60 Giron COP1210, COP3337, COP3530 
50 Gracia COP2250, COP3250, COP4250 
30 Jones COP1210, COP3337, COP3530 
45 O'Neal ENC1105, ENC3250, REL2210 
10 Smith COP2250, COP3250, COP4250 
20 Wilson WNC1105, ENC3250, REL2210 
+0

私はforループが必要だと知っていましたどこかでちょうどクリックしていなかった、私は週末を非難する!もう一度おねがいします。 – Mario

関連する問題