繁体   English   中英

我的项目中的 do while 循环有问题

[英]I have a problem with do while loop in my project

就是这个程序,我把它设计成一个手机商店,我面临的问题是你选择回去后,程序会正常返回,但是你选择购买后下次重启程序。 我想要的是让它直接停止购买。

import java.util.Scanner;
public class MyStore {
    
    public static void main(String[] args) {
        
        Scanner scan = new Scanner(System.in);
        
        Phones phOne = new Phones("iPhone 13.");
        phOne.phs(256);
        phOne.php(904);
        Phones phTwo = new Phones("Galaxy s22.");
        phTwo.phs(512);
        phTwo.php(1199);
        Phones phThree = new Phones("Huawei p50 pocket.");
        phThree.phs(512);
        phThree.php(1699);
        
        System.out.println("Welcom To My Store!\n-------*****-------");
        
        int i = 1;
        
        do {
        System.out.println("Choose a phone please:");
        System.out.println("1-iPhone 13.\n2-Galaxy s22.\n3-Huawei p50 pocket.");
        int a = scan.nextInt();
        System.out.println("-------*****-------");
        
        switch(a) {
            case 1:
                phOne.print();
                System.out.println("1-buy.\n2-go back.");
                int bg1 = scan.nextInt();
                if(bg1 == 1) {
                    System.out.println("Congratulations! we will deliver it to you.");
                    --i;
                }
                else if(bg1 == 2){
                    ++i;
                }
                else {
                    System.out.println("Please choose 1 or 2.");
                }
                break;
            case 2:
                phTwo.print();
                System.out.println("1-buy.\n2-go back.");
                int bg2 = scan.nextInt();
                if(bg2 == 1) {
                    System.out.println("Congratulations! we will deliver it to you.");
                    --i;
                }
                else if(bg2 == 2){
                    ++i;
                }
                else {
                    System.out.println("Please choose 1 or 2.");
                }
                break;
            case 3:
                phThree.print();
                System.out.println("1-buy.\n2-go back.");
                int bg3 = scan.nextInt();
                if(bg3 == 1) {
                    System.out.println("Congratulations! we will deliver it to you.");
                   i-=2;
                }
                else if(bg3 == 2){
                    ++i;
                }
                else {
                    System.out.println("Please choose 1 or 2.");
                }
                break;
            default:
                System.out.println("Please choose 1, 2, or 3.");
        }
        }while(i >= 1);
        
    }
    
}

如果您需要,这就是程序的其余部分。

import java.text.NumberFormat;
public class Phones {
    
    NumberFormat nf = NumberFormat.getCurrencyInstance();
    
    String name;
    int storage;
    double price;
    
    public Phones(String name) {
        this.name = name;
    }
    
    public void phs(int phs) {
        storage = phs;
    }
    
    public void php(double php) {
        price = php;
    }
    
    public void print() {
        System.out.println("Model: "+name);
        System.out.println("Storage: "+storage+"G");
        System.out.println("Price: "+nf.format(price));
    }
}

如果您希望程序在购买手机后停止,您需要使用布尔值实现 do-while 循环,然后在用户购买手机后将布尔值设置为 false。

boolean loop = true;
    
    do {
    System.out.println("Choose a phone please:");
    System.out.println("1-iPhone 13.\n2-Galaxy s22.\n3-Huawei p50 pocket.");
    int a = scan.nextInt();
    System.out.println("-------*****-------");
    
    switch(a) {
        case 1:
            phOne.print();
            System.out.println("1-buy.\n2-go back.");
            int bg1 = scan.nextInt();
            if(bg1 == 1) {
                System.out.println("Congratulations! we will deliver it to you.");
                loop = false;
            }
......
while(loop);

我建议更好地照顾你的变量名。 让它们变得明显和有意义,最终更容易调试!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM