所以我从大学到完成运动,我相信我接近它但到目前为止。我不是要求具体的答案,我很想知道如何“覆盖变量?” (不确定这是否是这种行为的正确名称)。
以下是问题:http://pastebin.com/riDYS39D
我遇到的问题是,我不知道如何覆盖在if语句中创建的变量中的数据。
和代码,随时欢迎任何帮助
import java.util.Scanner;
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
double grossPaid, allowance1, allowance2, totalTaxPaid, netPay, grossAfterAllowance;
double taxSaved;
final double GROSSRATIO;
String idNumber, name, address, strln;
char maritalStatus;
allowance1 = 25000;
allowance2 = 20000;
GROSSRATIO = 500000;
taxSaved = 0.00;
/* trash
grossAfterAllowance = grossPaid - allowanceGiven;
totalTaxPaid = grossAfterAllowance - netPay;
*/
System.out.println("Enter your employee identification number: ");
idNumber = input.nextLine();
System.out.println("Enter your name: ");
name = input.nextLine();
System.out.println("Enter your address: ");
address = input.nextLine();
System.out.println("Enter your marital status: ");
strln = input.next();
maritalStatus = strln.charAt(0);
if (maritalStatus == 'S')
taxSaved = 0.20;
if (maritalStatus == 'M')
taxSaved = 0.23;
System.out.println("Enter your gross payment: ");
grossPaid = input.nextDouble();
if (grossPaid < GROSSRATIO)
netPay = (grossPaid - allowance1) * taxSaved;
if (grossPaid >= GROSSRATIO)
netPay = (grossPaid - allowance2) * taxSaved;
System.out.println(maritalStatus);
netPay = (grossPaid * maritalStatus);
System.out.println("Name: " + name);
System.out.println("ID: " + idNumber);
System.out.println("Address: " + address);
System.out.println("Marital Status: " + strln);
System.out.println("Gross Payment: " + grossPaid);
System.out.println("Net pay: " + netPay);
}
}
答案 0 :(得分:1)
考虑您的第一个输入变量idNumber
,这就是覆盖变量的方式:
String idNumber = "";
System.out.println("Enter your employee identification number: ");
idNumber = input.nextLine();
System.out.println("ID Number: " + idNumber);
System.out.println("Enter your updated employee identification number: ");
idNumber = input.nextLine();
System.out.println("Updated ID Number: " + idNumber);
答案 1 :(得分:0)
你说&#34;随时欢迎任何帮助&#34;所以这是我对你的代码的分析。
通常的做法是将变量声明为尽可能接近其使用,通常这意味着首次分配时,例如:
String address = input.nextLine();
婚姻状况应为小写's'
或'm'
。您应该使用nextLine()
并验证它,例如
char maritalStatus;
do {
System.out.println("Enter your marital status (s/m):");
String line = input.nextLine();
maritalStatus = (line.length() == 1 ? line.charAt(0) : '?');
} while (maritalStatus != 's' && maritalStatus != 'm');
您的GROSSRATIO
应该是50000
,而不是500000
。
你对常量的使用不一致。
GROSSRATIO
是大写且最终的。完美!allowance1
和allowance2
是小写但不是最终版。0.20
和0.23
未命名为常量。 maritalStatus
是一个char
,所以这行编译,但绝对不是你想要的,而是你的&#34;奇怪输出的原因&#34; 。只需删除该行:
netPay = (grossPaid * maritalStatus);
您还在没有标签的情况下单独打印maritalStatus
。删除它。
您有两个if
语句用于分配对等的netPay
语句,但编译器没有看到,因此netPay
未明确分配。只需将第二个if
语句更改为else
。
totalTaxPaid
和grossAfterAllowance
。删除它们。
netPay
的计算实际上计算totalTax
。
您没有打印所有必需的输出。