首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >你能给我看一个替代这些冗长的,如果其他的发言吗?

你能给我看一个替代这些冗长的,如果其他的发言吗?
EN

Stack Overflow用户
提问于 2022-01-19 02:22:05
回答 3查看 101关注 0票数 -1

我试图创建代码,获取客户购买的商品数量,然后打印出折扣金额。

代码语言:javascript
运行
复制
1-3 items purchased will get no discount
4-6 items purchased will get 5% discount
7-10 items purchased will get 10% discount
11 or more items purchased will get a 15% discount

任何帮助都将不胜感激,谢谢。这是我创建的代码。

代码语言:javascript
运行
复制
package discount;
import java.util.Scanner;

public class Discount {

    public static void main(String[] args) {    
        Scanner input = new Scanner(System.in);
        System.out.println("Input the number of items: ");
        int quantity = input.nextInt();
                
        int[] discount = {0, 5, 10, 15};
        
        if (quantity >= 1 && quantity < 4) {
            System.out.print("no discount");
        } else if (quantity >= 4 && quantity < 7) {
            System.out.print(discount[1] + "% discount");
        } else if (quantity >= 7 && quantity < 11) {
            System.out.print(discount[2] + "% discount");
        } else if (quantity >= 11) {
            System.out.print(discount[3] + "% discount");
        }     
    }
}
EN

回答 3

Stack Overflow用户

发布于 2022-01-19 02:32:39

我建议您通过提取负责计算折扣和将消息打印成单独方法的代码来应用分解。它将使您的代码更简洁,即使没有开关表达式。

1.计算折扣:

代码语言:javascript
运行
复制
public static int getDiscount(int items) {
    return switch(items) {
        case 0, 1, 2, 3 -> 0;
        case 4, 5, 6 -> 5;
        case 7, 8, 9, 10 -> 10;
        default -> 15;
    };
}

2.打印消息:

代码语言:javascript
运行
复制
public static void printMessage(int discount) {
    switch(discount) {
        case 0 -> System.out.print("no discount");
        default -> System.out.println(discount + "% discount");
    }
}

3.主要:

代码语言:javascript
运行
复制
public static void main(String[] args) {    
    Scanner input = new Scanner(System.in);
    System.out.println("Input the number of items: ");
            
    printMessage(getDiscount(input.nextInt()));
}

  • 这段代码将与Java 14继续使用
票数 1
EN

Stack Overflow用户

发布于 2022-01-19 04:26:47

如果没有Kotlin whenswitch可能会做你想做的任何事情,也可能不会做任何事情。但是,如果您确实想用if-else编写,它可以清理:

代码语言:javascript
运行
复制
if(quantity > 0){ 
    int discount = -1
    if(quantity < 4) discount = 0; 
    else if (quantity < 7) discount = 5; 
    else if (quantity < 11) discount = 10;
    else discount = 15; 
    printDiscountMessage(discount)
}
票数 0
EN

Stack Overflow用户

发布于 2022-01-19 06:24:23

使用这个

代码语言:javascript
运行
复制
int discountCalculation = (quantity >= 1 && quantity < 4) ?discount[0]: (quantity >= 4 && quantity < 7)?discount[1]: (quantity >= 7 && quantity < 11) ?discount[2]:discount[3];
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70764594

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档