1

私はあなたの個人所得に基づいて税額を増やす所得税を計算するためのプログラムを書いています。「還付税」の行に「変動税が初期化されていない可能性があります」というエラーが表示され続けます。でも理由はわかりません。これまでの私のコードは次のとおりです。

import java.util.Scanner;  //Needed for the Scanner Class
/**
 * Write a description of class IncomeTax here.
 * @author 
 * 11/30/2012
 * The IncomeTax class determines how much tax you owe based on taxable income.
 */
 /**
 * The getTax returns the tax for the income.
 */
public double getTax() {
    double tax;
    if (income <10000.0) {
        tax = 0.10;
    }
    else {
        if (income > 10001.0 && income < 30000.0) {
            tax = 0.15;
        }
        else {
            if (income > 30001.0 && income < 60000.0) {
                tax = 0.25;
            }
            else {
                if (income > 60001.0 && income < 130000.0) {
                    tax = 0.28;
                }
                else {
                    if (income > 130001.0 && income < 250000.0) {
                        tax = 0.33;
                    }
                    else {
                        if (income > 250001.0) {
                            tax = 0.35;
                        }
                    }
                }
            }
        }
   }
   return tax;
}


/** 
 * The constructor accepts an argument for the income field.
 */
public IncomeTax(int i)
{
  income = i;
}
/**
 * The setIncome method accepts an argument for the income field.
 */
public void SetIncome(int i) {
    income = i;
}
/**
 * The getIncome method returns the income field.
 */
public int getIncome() {
    return income;
}

まだ終わっていません。ユーザーが実際に情報を入力して計算するためのコードを作成する必要がありますが、最初に還付税の行を修正せずにこれ以上先に進みたくありません。

4

4 に答える 4

3
double tax;

ローカル変数を初期化する必要があります。

例:

double tax=0.0;
于 2012-11-30T21:49:10.243 に答える
3

初期化する必要がありますtax

double tax = 0.0;
于 2012-11-30T21:49:18.557 に答える
1

短い答え

どのif条件にも合格しない可能性があるため、を設定する保証はありませんtax。使用する:

double tax = 0.10;

長い答え

冗長なコードがたくさんあります。これを行うことで、その多くを削除できます。

public static double getTax(double income)
{
  double tax = 0.10;
  if (income > 250000.0) {
    tax = 0.35;
  } else if(income > 130000.0) {
    tax = 0.33;
  } else if(income > 60000.0) {
    tax = 0.28;
  } else if(income > 30000.0) {
    tax = 0.25;
  } else if(income > 10000.0) {
    tax = 0.15;
  }
  return tax;
}

このように、真実ではないことをチェックする必要はなくelse if、コードを使用することで毎回インデントされることはありません。乾杯!また、引数を渡して関数を作成するstaticことにより、必要に応じて、他の場所で関数を使用できるようにすることができます。

于 2012-11-30T21:54:19.223 に答える
0

はい、他の回答で説明されているように変数を初期化する必要があります。または、taxをnullにできるようにする場合は、プリミティブではなくjavaオブジェクトを使用する必要があります。

Double tax = null;
于 2012-11-30T21:53:28.033 に答える