Java 这是嵌套的if吗?而while loop呢?不确定我是否';我正确地使用它们。但是我';我犯了错误&引用;否则不带if“;

Java 这是嵌套的if吗?而while loop呢?不确定我是否';我正确地使用它们。但是我';我犯了错误&引用;否则不带if“;,java,if-statement,while-loop,nested,Java,If Statement,While Loop,Nested,//决定用户是否将在支付的基础上获得佣金 import java.util.Scanner; public class commiPay{ public static void main( String[] args ){ Scanner input = new Scanner(System.in); int pay = 200; double com; double sales; double x;

//决定用户是否将在支付的基础上获得佣金

import java.util.Scanner;
public class commiPay{
    public static void main( String[] args ){
        Scanner input = new Scanner(System.in);
        int pay = 200;
        double com;
        double sales;
        double x;
        while ( sales = -1 )// I want the user to enter positive numbers
        {
            System.out.printf( "Sales cannot be negative");
            System.out.printf( "Enter sales sold this week: ");
        }
        System.out.println("Enter sales made this week: ");
        sales = input.nextInt(); 
        if ( sales >= 7500 )/*got this format from the traditional letter grade java example**/
        {
            System.out.println( "Commission is multiplied by 5%. " );
            com = sales*.5;
         else if ( sales >= 5001 )
             System.out.println( "Commission is multiplied by 4%. " );
             com = sales*.4;
         else if ( sales >= 2501 )
             System.out.println( "Commission is multiplied by 3%. " );
            com = sales*.3;   
         else if ( sales >= 1001 )
             System.out.println( "Commission is multiplied by 2%. " );
             com = sales*.2;    
         else ( sales < 1000 )
             System.out.println( "No commission. " );
             total = pay;
         }
         System.out.println( "You will get paid" + total + "this week."  );
     }
}

确保正确格式化if/elseif/else语句:

if() {

} else if() {

} else if() {

} else {

}

代码中缺少很多括号。您还需要初始化变量。输入一个小于1000的值,您将看到代码现在可以工作了。我还修复了一些尚未实现的代码。在每个if或else if块中,您需要将
com
pay
变量添加到
total
变量中。我还注意到你的佣金公式中的小数点是错的

例如:

您的代码
com=sales*.2中包含了这一点,这将产生20%的佣金,而不是代码注释中的2%。正确的公式是:

com = sales * 0.02;
我通过你的代码应用了这个补丁

    /decides if user will get commission on top of pay.

import java.util.Scanner;

public class commiPay {

public static void main( String[] args )

{ 

    Scanner input = new Scanner(System.in);




  double pay = 200;

  //added this variable(was missing from your code)
  double total = 0;

  double com = 0;//

  //intialize sales variable
  double sales = 0;

  double x;


  //The following to lines were moved to before the while loop
  System.out.println("Enter sales made this week: ");

     sales = input.nextInt();


  //while the sales number is positive
 while ( sales < 0 )// I want the user to enter positive numbers
  {
     System.out.printf( "Sales cannot be negative");


     System.out.println("Enter sales made this week: ");

         sales = input.nextInt();
  }









  if ( sales >= 7500 )/*got this format from the traditional letter grade java example**/
   {
     System.out.println( "Commission is multiplied by 5%. " );

       com = sales * 0.05;

     //add the commission to the total
       total = pay + com;

   }





 else if ( sales >= 5001 ){//added bracket

     System.out.println( "Commission is multiplied by 4%. " );
     com = sales * 0.04;

     //add the commission to the total
     total = pay + com;

 }//added bracket//added bracket//added bracket//added bracket
  else if ( sales >= 2501 ){//added bracket


     System.out.println( "Commission is multiplied by 3%. " );

      com = sales * 0.03;

    //add the commission to the total
       total = pay + com;

  }//added bracket//added bracket//added bracket//added bracket
  else if ( sales >= 1001 ){//added brace

      System.out.println( "Commission is multiplied by 2%. " );

       com = sales * 0.02;

       //add the commission to the total
       total = pay + com;


  }//added bracket//added bracket//added bracket//added bracket
  else if( sales < 1000 ){


     System.out.println( "No commission. " );
             total = pay;

   }




  System.out.println( "You will get paid " + (total) + " this week."  );





   }//end main method

}//end class
/决定用户是否将在支付之外获得佣金。
导入java.util.Scanner;
公费{
公共静态void main(字符串[]args)
{ 
扫描仪输入=新扫描仪(System.in);
双薪=200;
//添加了此变量(代码中缺少此变量)
双倍合计=0;
双com=0//
//初始化销售变量
双倍销售额=0;
双x;
//在while循环之前,以下to行被移动到
System.out.println(“输入本周的销售额:”);
sales=input.nextInt();
//而销售数字是正数
while(sales<0)//我希望用户输入正数
{
System.out.printf(“销售不能为负数”);
System.out.println(“输入本周的销售额:”);
sales=input.nextInt();
}
if(sales>=7500)/*从传统的字母级java示例中获取此格式**/
{
System.out.println(“佣金乘以5%”;
com=销售额*0.05;
//把佣金加到总数上
总计=支付+com;
}
如果(销售>=5001){//添加括号,则为else
System.out.println(“佣金乘以4%”;
com=销售额*0.04;
//把佣金加到总数上
总计=支付+com;
}//添加括号//添加括号//添加括号//添加括号
如果(销售额>=2501){//添加括号,则为else
System.out.println(“佣金乘以3%”;
com=销售额*0.03;
//把佣金加到总数上
总计=支付+com;
}//添加括号//添加括号//添加括号//添加括号
如果(销售>=1001){//添加了括号,则为else
System.out.println(“佣金乘以2%”;
com=销售额*0.02;
//把佣金加到总数上
总计=支付+com;
}//添加括号//添加括号//添加括号//添加括号
否则,如果(销售额<1000){
System.out.println(“无佣金”);
总额=工资;
}
System.out.println(“您将获得工资”+(总计)+“本周”);
}//端主方法
}//末级

如果在else If后面有多行,则需要将其放在大括号内,以确保程序不会混淆。据我所知,你只能使用

else if(something)
     indented something;
else if(something else)
etc.
如果你只有一行

else if ( sales >= 5001 )
             System.out.println( "Commission is multiplied by 4%. " );
             com = sales*.4;
需要

else if ( sales >= 5001 ){
             System.out.println( "Commission is multiplied by 4%. " );
             com = sales*.4;
}

等等。

您的代码缺少括号,并且在
中,而条件和计算也错误

import java.util.Scanner;
public class commiPay{
public static void main( String[] args ){
Scanner input = new Scanner(System.in);
    int pay = 200;
    double com;
    double sales = 0;
    double x;
    double total; // added this variable

    //First you need to get the user input. So I added these two lines to here.
    System.out.println("Enter sales made this week: ");
    sales = input.nextInt();

    //Checking whether enterd number is a positive or not
    while ( sales < 0 )// I want the user to enter positive numbers
    {
        System.out.printf( "Sales cannot be negative ");
        System.out.printf( "Enter sales sold this week: ");
        sales = input.nextInt(); // if the entered number is an negative number ask the user to re enter the number 
    }

    if ( sales >= 7500 )/*got this format from the traditional letter grade java example**/
    {
        System.out.println( "Commission is multiplied by 5%. " );
        com = sales*0.05;
    }
     else if ( sales >= 5001 ){
         System.out.println( "Commission is multiplied by 4%. " );
         com = sales*0.04;
     }
     else if ( sales >= 2501 ){
         System.out.println( "Commission is multiplied by 3%. " );
        com = sales*0.03;
     }
     else if ( sales >= 1001 ){
         System.out.println( "Commission is multiplied by 2%. " );
         com = sales*0.02;
     }
     else if( sales < 1000 ){
         System.out.println( "No commission. " );
         total = pay;
     }
}
}
import java.util.Scanner;
公费{
公共静态void main(字符串[]args){
扫描仪输入=新扫描仪(System.in);
int pay=200;
双com;
双倍销售额=0;
双x;
double total;//添加了此变量
//首先你需要得到用户的输入,所以我在这里添加了这两行。
System.out.println(“输入本周的销售额:”);
sales=input.nextInt();
//检查输入的数字是否为正数
while(sales<0)//我希望用户输入正数
{
System.out.printf(“销售不能为负数”);
System.out.printf(“输入本周售出的销售额:”);
sales=input.nextInt();//如果输入的数字是负数,请用户重新输入该数字
}
if(sales>=7500)/*从传统的字母级java示例中获取此格式**/
{
System.out.println(“佣金乘以5%”;
com=销售额*0.05;
}
否则如果(销售额>=5001){
System.out.println(“佣金乘以4%”;
com=销售额*0.04;
}
否则如果(销售额>=2501){
System.out.println(“佣金乘以3%”;
com=销售额*0.03;
}
否则如果(销售额>=1001){
System.out.println(“佣金乘以2%”;
com=销售额*0.02;
}
否则,如果(销售额<1000){
System.out.println(“无佣金”);
总额=工资;
}
}
}

您有以下几点:

    while ( sales = -1)
但是如果他们没有特别输入-1呢?应该是:

    while ( sales < 0 )
但我认为这不会造成问题

至于代码的其余部分,您在打印行中声明销售额将乘以5%,但将其乘以0.5(如下所示):


乘以0.5等于50%。尝试将其替换为0.05(5/100)。

看看大括号。OP想检查数字是否为正,但在代码中它检查数字是否等于-1。好的一点,我只是从原始代码中修复了语法错误。但这次你的while循环创建了一个无限循环。看看我的答案。看起来还是有一些错误。您的while循环总是错误的。它没有检查用户输入。您的sales=input.nextInt();while循环中的代码将永远无法访问。一旦用户输入负数,程序就结束了。别介意,我看到你在while循环之前移动了调用以获取用户输入。是的。因为我们使用while循环只是为了检查用户输入,所以我们需要在检查之前获取用户输入
    while ( sales < 0 )
    while ( sales = -1 )// I want the user to enter positive numbers
    {
        System.out.printf( "Sales cannot be negative");
        System.out.printf( "Enter sales sold this week: ");
    System.out.println( "Commission is multiplied by 5%. " );
        com = sales*.5;