Java 我的循环出现了问题。它可以运行,但不能循环 while(输入!=“1”){ 串客户; customer=JOptionPane.showInputDialog(“输入客户名称:”); 字符串类型; type=JOptionPane.showInputDialog(“选择复印类型:G/C”); if(类型等于(“G”)){ noOfPhotocopy=Integer.parseInt(JOptionPane .showInputDialog(“输入复印件编号:”); 如果(noOfPhotocopy=10){ 总价=无照片副本*0.05; } }else if(类型等于(“C”)){ noOfPhotocopy=Integer.parseInt(JOptionPane .showInputDialog(“输入复印件编号:”); 如果(noOfPhotocopy=10){ 总价=无照片副本*0.10; } } JOptionPane.showMessageDialog(空,“客户名称:“+Customer+”\n复印件类型:“+type+”\n复印件数量:“+noOfPhotocopy+”\n总价:RM”+(浮动)总价); 字符串输入1; input1=JOptionPane.showInputDialog(“按1停止或按任意键继续”); input=Integer.parseInt(input1); 打破 } showMessageDialog(null,“程序完成^^”);

Java 我的循环出现了问题。它可以运行,但不能循环 while(输入!=“1”){ 串客户; customer=JOptionPane.showInputDialog(“输入客户名称:”); 字符串类型; type=JOptionPane.showInputDialog(“选择复印类型:G/C”); if(类型等于(“G”)){ noOfPhotocopy=Integer.parseInt(JOptionPane .showInputDialog(“输入复印件编号:”); 如果(noOfPhotocopy=10){ 总价=无照片副本*0.05; } }else if(类型等于(“C”)){ noOfPhotocopy=Integer.parseInt(JOptionPane .showInputDialog(“输入复印件编号:”); 如果(noOfPhotocopy=10){ 总价=无照片副本*0.10; } } JOptionPane.showMessageDialog(空,“客户名称:“+Customer+”\n复印件类型:“+type+”\n复印件数量:“+noOfPhotocopy+”\n总价:RM”+(浮动)总价); 字符串输入1; input1=JOptionPane.showInputDialog(“按1停止或按任意键继续”); input=Integer.parseInt(input1); 打破 } showMessageDialog(null,“程序完成^^”);,java,loops,Java,Loops,请帮我输入这个代码。我无法确定这个代码有什么问题。当我运行这个程序时,循环似乎不起作用。这是我的作业项目,需要提前提交 为什么我的循环没有循环 while (input != '1'){ String customer; customer = JOptionPane.showInputDialog("Enter customer's name: "); String type; type = JOptionPane.showInputDialog("Choose

请帮我输入这个代码。我无法确定这个代码有什么问题。当我运行这个程序时,循环似乎不起作用。这是我的作业项目,需要提前提交

为什么我的循环没有循环

while (input != '1'){
    String customer;
    customer = JOptionPane.showInputDialog("Enter customer's name: ");

    String type;
    type = JOptionPane.showInputDialog("Choose type of photocopy: G/C");

    if (type.equals("G")) {
        noOfPhotocopy = Integer.parseInt(JOptionPane
            .showInputDialog("Enter no of photocopy: "));

        if (noOfPhotocopy < 10) {
            totalprice = noOfPhotocopy * 0.10;
        } else if (noOfPhotocopy >= 10) {
            totalprice = noOfPhotocopy * 0.05;
        }
    } else if (type.equals("C")) {
        noOfPhotocopy = Integer.parseInt(JOptionPane
                .showInputDialog("Enter no of photocopy: "));

        if (noOfPhotocopy < 10) {
            totalprice = noOfPhotocopy * 0.20;
        } else if (noOfPhotocopy >= 10) {
            totalprice = noOfPhotocopy * 0.10;
        }
    }

    JOptionPane.showMessageDialog(null, "Customer name : "+customer+"\nType of Photocopy : "+type+"\nNumber of Photocopy : "+noOfPhotocopy+"\nTotal Price : RM"+ (float)totalprice);

    String input1;
    input1 = JOptionPane.showInputDialog( "Press 1 to stop or press anything to continue ");
    input = Integer.parseInt(input1);
    break;
}
JOptionPane.showMessageDialog(null, "Program finished ^^");
这是错误的。因为
input
int
。在代码中编写:

while (input !='1'){
将其改写为:

input = Integer.parseInt(input1); // so input is int type

你可以无条件地打破break将始终退出封闭循环

此外,循环条件中的charint之间存在类型混淆。由于类型强制,它是合法的(int将转换为char进行比较,反之亦然),但它不会执行您想要的操作

while (input != 1){
是一个字符。它是一个UTF-16字符,其int值为49

'1'
是一个int

你真的想要这个:

1
这里有另一种方法,当程序变成梨形(无法按预期工作)时,您可以普遍应用这种方法

备份此代码并启动一个新的Java类。在该类中创建一个较小的示例。也许是这样的:

while (input != 1) {
这个程序有相同的bug,但要小得多。你能看出那个小程序的问题吗

这种方法通过删除代码或注释代码来实现,允许您通过反复试验来隔离bug。随着时间的推移,你会对错误产生直觉,并立即看到它们,但这种方法为你提供了一条达到这一点的途径

while (input != '1') {
    String input1;
    input1 = JOptionPane.showInputDialog( "Press 1 to stop or press anything to continue ");
    input = Integer.parseInt(input1);
    break;
}
JOptionPane.showMessageDialog(null, "Program finished ^^");
请参阅此代码以了解您的代码。
无需使用中断内部循环。您可以将其与条件中断一起使用。

考虑提供一个示例来说明您的问题。这不是一个代码转储,而是您正在做的一个示例,它突出了您所遇到的问题。这将减少混淆并获得更好的响应您正在检查“1”,但变量有整数1。也许这就是为什么我认为你想了解你使用的
break对你的循环做了什么作为最后一条语句,这就是为什么在执行while循环一次后,循环会中断。请在特定情况下使用break,即当您想退出或中断循环时。在您的程序中,如果输入变量在循环内更新,我认为您不需要使用break。
int input=1;
Scanner scn=new Scanner(System.in);
System.out.println("Start!!!");
while (input!=0) {
    System.out.println("Enter 0 to exit!!");
    input=scn.nextInt();
}
System.out.println("Finish!!!");