2016-11-27 3 views
1
import java.util.Scanner; 
public class error{ 

    private static class punto{ 
     int x, y; 
    } 
    private static class lados{ 
     punto inicio = new punto(); 

     public lados(punto inicio1){ 
      inicio=inicio1; 

     } 
     public punto getInicio(){ 
      return inicio; 
     } 
     public void setInicio(punto inicio){ 
      this.inicio = inicio; 
     } 

    } 

    public static void main(String[]args){ 
     Scanner leer = new Scanner(System.in); 
     punto inicio = new punto(); 
     lados arreglo[] = new lados[100]; 

     for(int i=0; i<3; i++){ 
      inicio.x = leer.nextInt(); 
      inicio.y = leer.nextInt(); 
      arreglo[i] = new lados(inicio); 
     } 

     for(int i=0; i<3; i++){ 
      System.out.println(arreglo[i].getInicio().x); 
      System.out.println(arreglo[i].getInicio().y); 
     } 
    } 
} 

? 誰かがそれを共有する場合、私は、私は配列 にインデックスに格納ponits(x、y)にしたいが、ちょうど最後の入力は、すべてのインデックスにstoragedさ... は多分、私がやりたいために他の方法がありますそれが大好きです。なぜちょうど最後の入力は、ストレージのですか?私が間違っているの何

入力:

1 
2 
3 
4 
5 
6 

出力:

5 
6 
5 
6 
5 
6 

予想される出力:

1 
2 
3 
4 
5 
6 
+0

...プント、Ladosなど:規約により

for(int i=0; i<3; i++){ inicio = new punto() inicio.x = leer.nextInt(); inicio.y = leer.nextInt(); arreglo[i] = new lados(inicio); } 

、クラスは大文字で開始する必要があります。あなたは、あなたが得ているエラーについてより具体的になることができますか?出力は次のように何を求めず、あなたはそれが見えるように何を期待したのですか?入力は何から成っていますか? – markspace

+0

私はより多くの情報とそれを編集し、私はあなたが –

+0

は、スタックオーバーフローへようこそ私を助けることを願って!デバッガの使い方を学ぶ必要があるようです。 [補完的なデバッグ手法](https://ericlippert.com/2014/03/05/how-to-debug-small-programs/)にご協力ください。その後も問題が残っている場合は、もう少し詳しくお聞かせください。 –

答えて

1

あなたが作成されているすべてのladosのインスタンスで同じinicioインスタンスを使用します。

あなたは情報が各繰り返しで上書きされないようにすることを望む場合は10
for(int i=0; i<3; i++){ 
      inicio.x = leer.nextInt(); 
      inicio.y = leer.nextInt(); 
      arreglo[i] = new lados(inicio); 
    } 

あなたは、各ladosためプントの新しいインスタンスを作成する必要があります。 それを試してみてください:あなたのコードは一見OKに見える

関連する問題