需要用java编写的健康保险程序有问题

问题描述 投票:0回答:1

我只是想简化这段 java 代码,因为我觉得它有点冗余,我也想摆脱可变字符串运算符 +i+,但我不确定此时我想做什么

                package skillsDemo2;
                import java.util.Scanner;
                public class HICHealthcare {
                public static void main(String[] args) {
                Person policyholder = new Person ();
                Scanner sc = new Scanner(System.in);
                double impatient_cost=0,private_cost=0,amount=0;
            
                    if(i==1)
                    {
                    suffix ="st";
                    }
                    if (i == 2)
                    {
                        suffix = "nd";
                    }
                    if (i == 3)
                    {
                        suffix= "rd";
                    }
                    if (i == 4)
                    {
                        suffix = "th";
                    }
                    if ( i == 5)
                    {
                        suffix = "th";
                    }
                    if ( i == 6)
                    {
                        suffix = "th";
                    }
                    System.out.println("Enter " +i+suffix+ " dependent name: ");
                    
                    name = sc.next();
                    
                    System.out.println("Enter the age of the " +i+suffix+ " dependent: ");
                    
                    age = sc.nextInt();
                    
                    if (i == 1 )
                    {
                        dependent1 = new Person (name, age, 250);
                        amount=amount+250;
                        
                        }
                    if (i == 2 )
                    {
                        
                        dependent2 = new Person (name, age, 150);
                        amount=amount+150;
                        
                    }
                    
                    if (i == 3 )
                    {
                        dependent3 = new Person (name, age, 100);
                        amount=amount+100;
                    }
                        
                    if (i == 4 )
                    {
                        dependent4 = new Person (name, age, 50);
                        amount=amount+50;
                    }
                    
                    if (i == 5)
                    {
                        dependent5 = new Person (name, age, 0);
                        
                    }
                    
                    if (i == 6)
                    {
                        dependent6 = new Person (name, age, 0);
                        
                        }
                    }
        
                    String roomType="NA";
                    System.out.println("Do you want inpatient insurance(yes/no)");
                    String inpatient_insurance= sc.next();
                    if(inpatient_insurance.equals("yes"))
                    {
                        impatient_cost=200;
                        roomType="Semi Private";
                    }
                    
                    System.out.println("Do you want private room(yes/no )");
                    String private_room= sc.next();
                    if(private_room.equals("yes"))
                    {
                        private_cost=100;
                        roomType="Private";
                    }
                    
                    System.out.println("Extras : \n - Orthopaedic care\n - Ophthalmic care \n "
                            + " - Maternity care\n - Fertility care\n -Psychiatric care");
                    
                    System.out.println("How many extras do you want ? ");
                    int extras=sc.nextInt();
                    
                    float extracharge =0;
                    if(extras<=2)
                    extracharge =extras*50;
                    else
                        System.out.println("More than 2 extras not allowed.");
                    String ExtraNames="";
                    for(int i =1;i<=extras;i++)
                    {
                    System.out.println("Enter Choice : \n 1. Orthopaedic care\n 2. Ophthalmic care \n "
                            + " 3. Maternity care\n 4. Fertility care\n 5.Psychiatric care");
                    int care=sc.nextInt();
                    if(care==1)
                    {
                        ExtraNames=ExtraNames+"\n \t \t \t Orthopaedic care";
                    }
                    if(care==2)
                    {
                        ExtraNames=ExtraNames+"\n \t \t \t Ophthalmic care";
                    }
                    if(care==3)
                    {
                        ExtraNames=ExtraNames+"\n \t \t \t Maternity care";
                    }
                    if(care==4)
                    {
                        ExtraNames=ExtraNames+"\n \t \t \t Fertility care";
                    }
                    if(care==5)
                    {
                        ExtraNames=ExtraNames+"\n \t \t \t Psychiatric care";
                    }
                    
                    }
        
                    amount=amount+impatient_cost+private_cost+extracharge;
                    
                    System.out.println("\t \t \t Health Care Policy");
                    
                    System.out.println("Name : \t \t"+policyholder.Name);
                    System.out.println("Number of Dependants : \t \t"+dependent);
                    for (int i =1;i<=dependent;i++)
                    {
                    if(i==1)
                        dependent1.display();
                    if(i==2)
                        dependent2.display();
                    if(i==3)
                        dependent3.display();
                    if(i==4)
                        dependent4.display();
                    if(i==5)
                        dependent5.display();
                    if(i==6)
                        dependent6.display();
                    }
                
                System.out.println("Basic Cost :\t\t "+policyholder.Cost);
                System.out.println("Impatient Cost : \t\t"+inpatient_insurance+"\t\t"+impatient_cost);
                System.out.println("Room Type : \t\t"+roomType+"\t\t"+private_cost);
                System.out.println("Additional Extras : \t\t"+ extracharge +ExtraNames);
                System.out.println("Total Before Vat : \t\t"+amount);
                double vat= (21.0/100.0)*amount;
                System.out.println(" VAT :\t \t\t" + String.format("%.2f", vat));
                
                System.out.println("Total : \t\t\t"+(amount+vat ));
                }

我试图删除运算符变量并直接在使用它的表达式/语句中使用 i 我还想将使用 i 的多个语句/表达式组合成一个语句/表达式,以及使用循环而不是多次重复类似的代码,以及将逻辑提取到单独的、命名良好的方法中以避免重复。

java simplify
1个回答
1
投票

有很多方法可以缩短您所写的内容。一种不错的方法是使用“开关表达式”,它看起来像这样。

suffix = switch (i) {
        case 1 -> "st";
        case 2 -> "nd";
        case 3 -> "rd";
        default -> "th";
    };

另一种选择是将选项存储在数组中,并使用

i
作为索引来查找它们。它可能看起来像这样。这使用条件运算符来确保索引在数组的范围内。

String[] suffixes = { "th", "st", "nd", "rd" };
suffix = suffixes[ i > 3 ? 0 : i ];
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.