2

このサイトで、私の質問に関連する可能性のある回答を見つけようとして 40 分以上探しましたが、役に立ちませんでした。

私は困惑しています。プログラムを GUI に変換しようとしています。私は変数がすでにメインメソッドで定義されていることをコンパイルすると教えてくれるテキストパッドを使用しています。次に、intまたはdoubleに変換すると、シンボルが見つからず、変換しようとしている変数を指していることがわかります。次に、計算中に、二項演算子 '*' のオペランドの型が正しくないことがわかります。

import javax.swing.JOptionPane;

public class PayrollGUI {

// calculates payroll
public static void main (String [] args) {

String name = JOptionPane.showInputDialog ("Employee's Name: ");
int name = Integer.parseInt(nameString);

String hours = JOptionPane.showInputDialog ("Number of hours worked in a week (e.g., 10: ");
int hours = Integer.parseInt(hoursString);

String payRate = JOptionPane.showInputDialog ("Hourly pay rate (e.g., .6.75: ");
double payRate = Double.parseDouble(payRateString);

String federalTaxRate = JOptionPane.showInputDialog ("Federal tax witholding rate (e.g., .20: ");
double federalTaxRate = Double.parseDouble(federalTaxRateString);

String stateTaxRate = JOptionPane.showInputDialog (" State tax witholding rate (e.g., .09: ");
double stateTaxRate = Double.parseDouble(stateTaxRateString);

//calculate witholdings, grosspay and netpay
double federalWitholding = federalTaxRate * (hours * payRate);
double stateWitholding = stateTaxRate * (hours * payRate);
double grossPay = hours * payRate;
double netPay = grossPay - withholdings;
double witholdings = federalWithodling + stateWitholding;

//format to keep two digit decimal
witholdings = (int) (witholdings * 100) /100.0;
netPay = (int) (netPay * 100) / 100.0;
grossPay = (int) (grossPay * 100) / 100.0;
federalWitholding = (int) (federalWitholding * 100) / 100.0;
stateWitholding = (int) (stateWitholding *100) / 100.0;

/*String output = (null);
String output = (null);*/
String output = "Employee Name: " + name +
"/nHours Worked: "  + hours +
"/nPay Rate: $" + payRate +
"/nGross Pay: $" + grossPay +
"/nDeductions:" +
"/n     Federal Witholding: $" + federalWitholding +
"/n     State Witholding : $" + stateWitholding +
"/n     Total Deductions : $" + witholdings +
"/n     Net Pay: $";
JOptionPane.showMessageDialog(null, output);
}//end main
}//end Payroll
4

3 に答える 3

5
String name = ...;
int name = ...;

できません。

!を使用するときに解析しようとしている変数であるため、にString name置き換えます。(そして、他のすべての変数も忘れないでください!)String nameStringInteger.parseInt

例えば

String hoursString hoursString
String payRate一緒にString payRateString
String federalTaxRate_String federalTaxRateString
String stateTaxRateString stateTaxRateString

于 2013-01-29T04:08:48.807 に答える
5
  1. name, hours, payRate, .... 変数が 2 回宣言されているため、コンパイルできません。それぞれを別の名前に変更します
  2. 入力が正しい形式(アルファベットなど)ではない可能性があるため、parseInt,ステートメントは良くありません。したがって、入力を検証するparseDoubleために使用する必要がありますtry/catch
  3. witholdings = (int) (witholdings * 100) /100.0;これは、2 桁の形式を維持する方法ではありません。これを読む
  4. より良い IDE を使用してみてください。Java を初めて使用する場合は、jcreatorまたはbluejをご覧ください。
于 2013-01-29T04:11:09.287 に答える
1

You cannot have two same variable names in one method. In your code you have many duplicate variables just like the one below. You cannot have two name variables in same method.

String name = JOptionPane.showInputDialog ("Employee's Name: ");
int name = Integer.parseInt(nameString);

If you use any IDE for Java like Eclipse, you can easily solve these kind of compilation issues rather than Textpad.

于 2013-01-29T04:13:39.217 に答える