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;