2017-10-20 10 views
-3

これでクラスでこのプロジェクトを受け取りました。そのほとんどを作成できました。私が立ち往生している唯一のことは、n家族の所得を出力することです。家族ごとに同じ結果を印刷し続けます。なぜ私はそれをやっているのかわかりません。どんな助けも素晴らしいでしょう。ありがとうございました。すべてのファミリに同じ値を出力します

public class Family { 

private double income; 
private int size; 

public Family()//set everything to 0 at first 
    { 
     income=0.0; 
     size=0; 
    } 

public Family(double newIncome, int newSize) 
    { 
     income=newIncome; 
     size=newSize; 
    } 

public void writeoutput() 
    { 
     int index = 0;//created variable for an array 

     System.out.println("how manny Families are there"); 
     Scanner input = new Scanner(System.in); 
     index=input.nextInt(); 
     int[]family=new int[index];//input how many families 

    } 
     for (int i=0;i<index;i++){ 

     System.out.println("Enter income in family["+i+"]"); 
     income=input.nextDouble(); 
     System.out.println("Enter size in family["+i+"]"); 
     family[i]=input.nextInt();//input amount of members 

    } 

    System.out.println("Values in array: "); 

    for (int i=0;i<index;i++) 
    { 
     System.out.println("Family["+i+"] has $"+this.income+" dollars for incom"); 
     } 

    for (int i=0;i<index;i++) 
    { 
     System.out.println("Family["+i+"] has "+family[i]+" members"); 
     } 
    } 

OUTPUT

 how manny Families are there 
     3 
     Enter income in family[0] 
     43.2 
     Enter size in family[0] 
     5 
     Enter income in family[1] 
     653.5 
     Enter size in family[1] 
     8 
     Enter income in family[2] 
     234.5 
     Enter size in family[2] 
     6 
     Values in array: 
     Family[0] has $234.5 dollars for incom 
     Family[1] has $234.5 dollars for incom 
     Family[2] has $234.5 dollars for incom 
     Family[0] has 5 members 
     Family[1] has 8 members 
     Family[2] has 6 members 
+0

家族を入力することは 'Family'クラスにあるべきですか?このコードを何と呼びますか? 'writeOutput'は独自の出力だけを書いて、入力を求めるのではなく、より良い設計になるかもしれません。 – phflack

+1

このコードはコンパイルされません。メソッドの外にステートメントがあります。あなたの投稿を編集してください(https://stackoverflow.com/posts/46854487/edit)。 –

+0

私はそれが今働いている心配はありません。ありがとう –

答えて

0

あなたがオブジェクトの配列を学習することになりますので、ごfamili []はあなたのループで次に

Family[] family = new Family[index]; 

family[i] = new Family(); 
family[i].income = input.nextDouble(); 
family[i].size = input.nextInt(); 

する必要があり、最後の部分の印刷出力で変数トラフファミリー[位置] .variable

1

私はあなたに完全な解決策を与えるつもりはありません。しかし、コードには多くの欠陥があります。

ここでメンバー変数sizeincome、またはコンストラクタを使用しています。 OOPの機能を使用していません。コードはここでは冗長です。

int[]family=new int[index];を使用する代わりに、Family families[] = new Family[index]を使用し、メンバー変数incomeおよびsizeにデータを格納します。

関連する問題