-2

我正在编写一个程序,它具有以下方向:

  • 创建 10 个 Taxpayer 对象时,SSN 增加 10,收入增加 10,000;
  • 分别从 10 和 10,000 起。
  • 输出应该看起来像
  • 纳税人SSN:10 收入:10000
  • 纳税人SSN:20 收入:20000
  • ...
  • 纳税人SSN:100 收入:100000

我已经编写了代码,但它以 90 而不是 100 结束。我做错了什么?

public class UseTaxpayer {
    public static void main(String[] args) {
        Taxpayer[] tp = new Taxpayer[10];
        for (int i=1; i<10; i++) {
            payer[i] = new Taxpayer(i*10, 10000*i);
            System.out.println("Taxpayer SSN: " + payer[i].getSS() + " Income: " + tp[i].getIncome());
        }
    }
} 

class Taxpayer {
    private int socialsecurity, income;

    Taxpayer(int ss, int income) {
        socialsecurity = ss;
        this.income = income;
    }

    int getSS() {
        return socialsecurity;
    }

    int getIncome() {
        return income;
    }
}

我已经为 For 语句“拼凑”了一个可行的解决方案: for (int i = 0; i < 10; i++) { payer[i] = new payer(i * 10 + 10, (10000 * (i + 1))); // 根据方向计算 SSN 和金额 System.out.println(" Taxpayer SSN: " + payer[i].getSSN() + " Income: " + payer[i].getmoney());

如果我从 1 开始数组,我会得到一个错误。如果我不添加付款人(i)的“+ 10”部分,我会得到 SSN:0 收入 10000。

这种方法有效,但想知道是否有更好的方法来做到这一点。

4

6 回答 6

4

在 for 循环中使用 <= 而不是 <。

于 2013-10-01T16:17:52.183 回答
1

你的代码很好。您唯一缺少的是当您说 i<10 时,这不包括 10。这可以通过说 i<=10 或 i<11 来解决。

于 2013-10-01T16:19:57.620 回答
0

为了使它更容易阅读,你可以这样做:

    for(int i=10;i<=100;i = i + 10){ 
        tp[i] = new Taxpayer(i, 1000*i);
    }
于 2013-10-01T16:22:49.367 回答
0

您的循环只有 9 次迭代。使检查小于或等于 10。

于 2013-10-01T16:23:56.660 回答
0

尝试这个...

    Taxpayer[] tp = new Taxpayer[11];

    for (int i=1; i<=11; i++) {
        tp[i] = new Taxpayer(i*10, (10000*i));
        System.out.println("Taxpayer SSN: " + tp[i].getSS() + " Income: " + 
于 2013-10-06T07:06:15.920 回答
0

您的for循环中有一个错误。如果您将其更改i<10i<=10,它将解决您的问题。

for(int i=1;i<=10;i++){
   tp[i]=new Taxpayer(i*10,(10000*i));
   System.out.println(" Taxpayer SSN:" + tp[i].getSS()+" Income: "+tp[i].getIncome());
}
于 2013-10-01T16:19:21.023 回答