2015-10-11 32 views
-3

所以我有一个大学的锻炼完成,我相信我接近它,但迄今为止。我不是要求一个具体的答案,我很想知道如何“覆盖变量?” (不知道这是否是这种行为的正确名称)。程序奇怪的输出,太愚蠢了解决:c

这里有一个问题: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

是变量taxSaved? –

+0

@domfarr是先生 – thedumbone

+0

umm ..但taxSaved不是在if语句中创建的? – eis

回答

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); 
+0

您没有阅读我的问题,“我不知道如何覆盖if语句中创建的变量中的数据。”即taxSaved – thedumbone

+0

嗯......它不是在if语句中创建的。它被分配了一个值,我想你仍然可以用你想要的任何值覆盖它,这有什么问题? –

0

你说“任何帮助总是受欢迎的”,所以这里是我对你的代码的分析。

这是一般的做法是声明变量接近其使用成为可能,最常见的是第一次分配时表示,例如:

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和​​是小写的而不是最终的。
  • 0.200.23未被命名为常量。

maritalStatuschar,所以这行编译,但绝对不是你想要的,是你的“怪输出”的原因。请删除该行:

netPay = (grossPaid * maritalStatus); 

您也正在打印maritalStatus本身没有标签。去掉它。

你有两个if语句分配netPay是相反的,但编译器没有看到,所以netPay没有明确分配。只需将第二个if声明更改为else即可。

totalTaxPaidgrossAfterAllowance未被使用。删除它们。

netPay的计算实际上是计算totalTax

您不打印所有需要的输出。

+0

好吧,所以我改变了一些东西,我不能使用'做,而'等等,因为我们还没有讲授它:v,它现在似乎正在工作http://pastebin.com/RvHDsX28谢谢! – thedumbone