Java程序可以工作但很早就结束了

时间:2013-10-01 16:16:35

标签: java

我正在编写一个有这些方向的程序:

  • 创建10个纳税人对象时,将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语句做了“kludged”一个有效的解决方案: for(int i = 0; i&lt; 10; i ++){             付款人[i] =新付款人(i * 10 + 10,(10000 *(i + 1))); //根据指示计算SSN和金钱             System.out.println(“纳税人SSN:”+付款人[i] .getSSN()                     +“收入:”+付款人[i] .getmoney());

如果我在1处启动数组,则会出现一个错误。如果我不添加付款人的“+ 10”部分(i),我得到SSN:0收入10000.

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

6 个答案:

答案 0 :(得分:4)

使用&lt; =而不是&lt;在你的for循环中。

答案 1 :(得分:1)

你的代码很好。你唯一缺少的就是你说i&lt; 10,这不包括10.这可以通过说i&lt; = 10或i&lt; 11来解决。

答案 2 :(得分:0)

您的for循环中出现了一个错误的错误。如果您将i<10更改为i<=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());
}

答案 3 :(得分:0)

为了让您更容易阅读,您可以这样做:

    for(int i=10;i<=100;i = i + 10){ 
        tp[i] = new Taxpayer(i, 1000*i);
    }

答案 4 :(得分:0)

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

答案 5 :(得分: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: " +