Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么变量没有初始化?_Java_Variables - Fatal编程技术网

Java 为什么变量没有初始化?

Java 为什么变量没有初始化?,java,variables,Java,Variables,如果您的销售数字低于5000,您的佣金将无法初始化,我认为您在编码时犯了一个错误,应该是这样的: System.out.println("With a sales amount of $"+salesFigure+", $"+commission+" is the amount of commission earned."); import java.util.Scanner; 公开课委员会 { 公共静态void main(字符串[

如果您的销售数字低于5000,您的佣金将无法初始化,我认为您在编码时犯了一个错误,应该是这样的:

 System.out.println("With a sales amount of $"+salesFigure+", $"+commission+" is the amount of commission earned.");
import java.util.Scanner;
公开课委员会
{
公共静态void main(字符串[]args)
{
双销售额;
双重佣金;
扫描仪=新的扫描仪(System.in);
System.out.println(“输入总销售额:”);
salesFigure=scanner.nextDouble();
//这将解决问题>--><
如果(销售数字<5000)佣金=销售数字*.03;
如果(salesFigure>5000&&salesFigure 10000&&salesFigure 15000)佣金=salesFigure*.06;
System.out.println(“销售金额为$”+salesFigure+“,$”+commission+“是赚取的佣金金额”);
}
}
这应该可以解决问题。也有一些小的挑剔,但最好是在单独的行中声明变量,这样更容易阅读

为什么变量没有初始化

这是因为您在声明它时没有初始化它:

import java.util.Scanner;
   public class Commission
   {
      public static void main(String[] args)
      {
      double salesFigure;
      double commission;
      
      Scanner scanner=new Scanner(System.in);
     
      System.out.println("Enter the total sales amount:");
      salesFigure =scanner.nextDouble();
     
      // this should fix the problem > --> <
      if(salesFigure < 5000) commission= salesFigure*.03;
      if(salesFigure > 5000 && salesFigure <=1000) commission= salesFigure*.04;
      if(salesFigure > 10000 && salesFigure<=15000) commission= salesFigure*.05;
      if(salesFigure > 15000) commission= salesFigure*.06;
      System.out.println("With a sales amount of $"+salesFigure+", $"+commission+" is the amount of commission earned.");

   }
}
此外,当您尝试为
佣金
赋值时,
佣金
的所有可能赋值都需要通过给定的条件

double salesFigure, commission;

其次,检查你的情况。确保它们不是一些永远不可能为真的矛盾条件。

一个简单的解决方案是按如下方式反转检查:

double commission = 0.0d;
这样,您就不需要初始化commission,因为它将始终收到一个值(我强烈建议在使用大量if/elseif语句时始终使用大括号{})

如果对百分比使用附加变量,则可以编写更清晰的代码:

    if (salesFigure > 15000)
       commission= salesFigure*.06;
    else if (salesFigure > 10000)
       commission= salesFigure*.05;
    else if (salesFigure > 5000) 
       commission= salesFigure*.04;
    else
       commission= salesFigure*.03;

因为当
salesfraugh 5000&&salesfraugh感谢有意义时,它没有初始化。另外,我没有写这篇文章,我只是要纠正它,这是我唯一的错误,但我知道这永远不会是真的@Polygenomeplus,请不要使用double进行财务价值和计算,谢谢,我还是个新手,所以我甚至不知道BigDecimal是什么,但我会研究一下;e、 g.
if(salesFigure>15000){…}else if(salesFigure>10000){…}else…
感谢您的帮助,但我仍然收到相同的错误:(这不会消除错误,因为对于编译器来说,变量可能仍然未初始化。您应该使用
else
或从一开始就初始化变量。非常感谢,这样就解决了它。
double commission = 0.0d;
    if (salesFigure > 15000)
       commission= salesFigure*.06;
    else if (salesFigure > 10000)
       commission= salesFigure*.05;
    else if (salesFigure > 5000) 
       commission= salesFigure*.04;
    else
       commission= salesFigure*.03;
 double percentage;
 if (salesFigure > 15000) {
     percentage = 6;
 } else if (salesFigure > 10000) {
     percentage = 5;
 } else if (salesFigure > 5000) {
     percentage = 4;
 } else {
     percentage = 3;
 }
 commission = salesFigure * (percentage / 100.0);