簡體   English   中英

我的對象數組只打印最后輸入的值 java

[英]My array of objects only printing last entered value java

嗨,我是 Java 編程的新手。 在這里,我試圖用對象數組來實現代碼。 問題是每當我嘗試打印時。 它只打印最后輸入的值 10 次。

import java.util.*;

class Tax{
    int ssn,income;
    void Tax(){}

    void Tax(int s,int i){
         this.ssn=s;this.income=i;      
    }

    int getssn(){
        return ssn;
    }

    int getincome(){
        return income;
    }
}

public class Usetaxpayer{
     public static void main(String[] args){
         Tax[] y=new  Tax[10];
         int i,inc,s=100;
         Scanner in=new Scanner(System.in);Tax x=new Tax();
         for(i=0;i<10;i++)
         {
             inc=in.nextInt();y[i]=x;
             x.Tax(s,inc);
             s++;      
         }
         for(i=0;i<10;i++)
         {
              System.out.println("SSN"+y[i].getssn()
              +"income"+y[i].getincome()+"\n");
         }
     }
}

請幫幫我`

您錯誤地將void用於構造函數。 此外,您需要在循環內創建實例。

演示:

import java.util.Scanner;

class Tax {
    int ssn, income;

    Tax(int s, int i) {
        this.ssn = s;
        this.income = i;
    }

    int getssn() {
        return ssn;
    }

    int getincome() {
        return income;
    }
}

public class Usetaxpayer {
    public static void main(String[] args) {
        final int SIZE = 2;
        Tax[] y = new Tax[SIZE];
        int i, inc = 0, s;
        Scanner in = new Scanner(System.in);
        for (i = 0; i < SIZE; i++) {
            System.out.print("Enter SSN: ");
            s = in.nextInt();
            System.out.print("Enter income: ");
            inc = in.nextInt();

            y[i] = new Tax(s, inc);
        }
        for (i = 0; i < SIZE; i++) {
            System.out.println("SSN: " + y[i].getssn() + ", income: " + y[i].getincome());
        }
    }
}

示例運行:

Enter SSN: 123
Enter income: 1000
Enter SSN: 234
Enter income: 2000
SSN: 123, income: 1000
SSN: 234, income: 2000

注意:我使用了一個大小為 2 的數組進行演示。 根據您的要求更改SIZE的值。

問題是您使用一個 object 10 次並一次又一次地替換這些值。 這僅保留最后一個值。 試試這個:

class Tax{

    int ssn,income;
    void Tax(){}

    void Tax(int s,int i){
        this.ssn=s;this.income=i;
    }

    int getssn(){
        return ssn;
    }

    int getincome(){
        return income;
    }
}

public class Main{
    public static void main(String[] args){
        Tax[] y=new  Tax[10];

        int i,inc,s=100;

        Scanner in=new Scanner(System.in);

        for(i=0;i<10;i++)
        {
            Tax x=new Tax();
            inc=in.nextInt();
            y[i]=x;
            x.Tax(s,inc);
            s++;
        }

        for(i=0;i<10;i++)
        {
            System.out.println("SSN "+y[i].getssn() +"income "+y[i].getincome()+"\n");
        }
    }
}

你有兩個錯誤:

  1. 聲明構造函數時出錯,這些聲明沒有類型,如下面的代碼所示:

公共稅(){}

 public Tax(int s, int i){ this.ssn=s;this.income=i; }

根據您的需要,構建器可以是公共的或私有的。

  1. 目前,通過您的循環並將 object x 添加到數組中僅添加相同的 memory 實例,添加的最佳方法如下。
 Scanner in=new Scanner(System.in); for(i=0;i<10;i++) { inc= in.nextInt(); y[i]= new Tax(s,inc); s++; }

這樣你總是添加一個新的 Tax 實例。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM