gpt4 book ai didi

java - 带哨兵循环的 switch 语句

转载 作者:行者123 更新时间:2023-12-01 10:25:32 25 4
gpt4 key购买 nike

我在使 sum 函数正常工作时遇到一些问题。我正在尝试创建一个程序,使用开关结构和哨兵循环来请求产品编号和数量。它将一直运行直到输入 0。它应该计算输入的产品总数和输入的所有产品的总值(value)。数量很好。这是仅适用于输入的第一个产品的总值(value)。在按下 0 之前,我无法获得继续添加的总和。任何帮助将不胜感激!!

import java.util.Scanner;

public class Mailorder {

public static void main(String[] args) {

//create a scanner
Scanner input = new Scanner(System.in);

//declare variables

double product1 = 3.75;
double product2 = 5.95;
double product3 = 8.75;
double product4 = 6.92;
double product5 = 8.75;
double product6 = 7.87;
double total = 0.00;

//read in product #
System.out.print("Enter a product number: ");
int product = input.nextInt();

//read in quantity sold
System.out.print("Enter quantity sold for 1 day: ");
int quantity = input.nextInt();

//switch case
switch (product)
{
case 1: total = product1 * quantity; break;
case 2: total = product2 * quantity; break;
case 3: total = product3 * quantity; break;
case 4: total = product4 * quantity; break;
case 5: total = product5 * quantity; break;
case 6: total = product6 * quantity; break;
default: System.out.println("ERROR: Invalid product number");
}

//keep reading data until the input is 0
int sum1 = 0;
while (quantity != 0) {
sum1 += quantity;

int sum2 = 0;
while (total != 0) {
sum2 +=total;
}
//read the next data
System.out.print("Enter a product number: ");
product = input.nextInt();

System.out.print("Enter quantity sold for 1 day: ");
quantity = input.nextInt();
}

//print results
System.out.println("The total number of products sold last week " + sum1);
System.out.println("The total retail value of all products sold last week " + sum2);

}
}

最佳答案

这里存在几个范围界定问题。

首先,您已将 switch 语句置于循环之外。您应该将其放在循环内。

其次,sum2 存在范围界定问题。它在哨兵循环内部声明,但在外部引用。我不确定为什么你有一个嵌套循环添加到 sum2 中。以下是解决这些问题的代码:

    public class Mailorder {

public static void main(String[] args) {

//create a scanner
Scanner input = new Scanner(System.in);

//declare variables

double product1 = 3.75;
double product2 = 5.95;
double product3 = 8.75;
double product4 = 6.92;
double product5 = 8.75;
double product6 = 7.87;

//read in product #
System.out.print("Enter a product number: ");
int product = input.nextInt();

//read in quantity sold
System.out.print("Enter quantity sold for 1 day: ");
int quantity = input.nextInt();


//keep reading data until the input is 0
int sum1 = 0;
int sum2 = 0;
while (quantity != 0) {
sum1 += quantity;

double total = 0.00;
//switch case
switch (product)
{
case 1: total += product1 * quantity; break;
case 2: total += product2 * quantity; break;
case 3: total += product3 * quantity; break;
case 4: total += product4 * quantity; break;
case 5: total += product5 * quantity; break;
case 6: total += product6 * quantity; break;
default: System.out.println("ERROR: Invalid product number");
}
sum2 += total;

//read the next data
System.out.print("Enter a product number: ");
product = input.nextInt();

System.out.print("Enter quantity sold for 1 day: ");
quantity = input.nextInt();
}


//print results
System.out.println("The total number of products sold last week " + sum1);
System.out.println("The total retail value of all products sold last week " + sum2);

}
}

关于java - 带哨兵循环的 switch 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35373065/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com