Java 系统输出打印ln don';循环结束后不能工作

Java 系统输出打印ln don';循环结束后不能工作,java,printing,Java,Printing,大家好(抱歉英语不好)我自己在寻找答案,但我被卡住了,我不知道为什么它不起作用:x(请不要嘲笑我,这是我在Java t上的第一天) 我想这对你来说是显而易见的,但我有 “看起来您的帖子大部分是代码;请添加更多详细信息。” 所以:当我键入0并输入时,代码应该停止运行循环并显示最后一行,但我在控制台上什么也得不到:x 这是密码 package fr.eni.demo; import java.util.Scanner; public class Cheque { static doub

大家好(抱歉英语不好)我自己在寻找答案,但我被卡住了,我不知道为什么它不起作用:x(请不要嘲笑我,这是我在Java t上的第一天)

我想这对你来说是显而易见的,但我有

“看起来您的帖子大部分是代码;请添加更多详细信息。”

所以:当我键入0并输入时,代码应该停止运行循环并显示最后一行,但我在控制台上什么也得不到:x

这是密码

package fr.eni.demo;

import java.util.Scanner;

public class Cheque
{

    static double nbCheques = 0;
    static double total = 0;
    static double moyenne = 0;
    static double inf200 = 0;
    static double totalInf200 = 0;
    static double egalSup200 = 0;
    static double totalEgalSup200 = 0;
    static double numeroPlusPetit = 0;
    static double plusPetit = 0;
    static double numeroPlusGrand = 0;
    static double plusGrand = 0;


public static void main(String[] args)
{
    Scanner scan = new Scanner(System.in);
    System.out.println("Entrez le montant du chèque. 0 pour quitter.");
    double input = scan.nextDouble();
    
    while (input != 0);
    {
        nbCheques++;
        total = total + input;
            if (input < 200)
            {
                inf200++;
                totalInf200 = totalInf200 + input;
                plusPetit = input;          
                
                while (input < plusPetit)
                    {
                        plusPetit = input;
                        numeroPlusPetit = nbCheques;
                    }
            }
            else 
            {
                egalSup200++;
                totalEgalSup200 = totalEgalSup200 + input;
                plusGrand = input;  
                
                while (input > plusGrand)
                {
                    plusGrand = input;
                    numeroPlusGrand = nbCheques;
                }
            }
    } 
    moyenne = total/moyenne;
    System.out.println("Nombre(s) de chèque(s) : " + nbCheques);
    System.out.println("Montant total : " + total);
    System.out.println("Moyenne totale : " + moyenne);
    System.out.println("Chèque(s) inférieur(s) à 200€ : " + inf200);
    System.out.println("Montant total des chèques < 200€ : " + totalInf200 +"€");
    System.out.println("Chèque(s) supérieur(s) ou = à 200€ : " + egalSup200);
    System.out.println("Montant total des chèques >= 200€ : " + totalEgalSup200 +"€");
    System.out.println("#Chèques plus petit : " + numeroPlusPetit);
    System.out.println("Plus petit montant : " + plusPetit +"€");
    System.out.println("#Chèques plus grand : " + numeroPlusGrand);
    System.out.println("Plus grand montant : " + plusGrand +"€");
    
}

}
包fr.eni.demo;
导入java.util.Scanner;
公款支票
{
静态双nbCheques=0;
静态双倍合计=0;
静态双莫延=0;
静态双inf200=0;
静态双总INF200=0;
静态双egalSup200=0;
静态双总EGALSUP200=0;
静态双numeriopluspett=0;
静态双脉冲=0;
静态双numerioplusgrand=0;
静态双脉冲随机数=0;
公共静态void main(字符串[]args)
{
扫描仪扫描=新扫描仪(System.in);
System.out.println(“Entrez le montant du chèque.0 pour quitter.”);
双输入=scan.nextDouble();
while(输入!=0);
{
nbCheques++;
总计=总计+输入;
如果(输入<200)
{
inf200++;
totalInf200=totalInf200+输入;
plusPetit=输入;
while(输入加号)
{
plusGrand=输入;
numeroPlusGrand=nbCheques;
}
}
} 
moyenne=总计/moyenne;
System.out.println(“Nombre(s)de chèque(s):”+nbCheques);
System.out.println(“蒙塔特总计:+总计”);
System.out.println(“Moyenne总计:+Moyenne”);
System.out.println(“200欧元的信息量:”+inf200);
System.out.println(“Montant total des chèques<200欧元:“+totalInf200+”);
System.out.println(“Chèque(s)supérieur(s)ou=a 200欧元:”+egalSup200);
System.out.println(“Montant total des chèques>=200欧元:“+totalEgalSup200+”);
System.out.println(“#Chèques+petit:“+numeriopluspetit”);
System.out.println(“加上小蒙塔:“+plusPetit+”€”);
System.out.println(“#Chèques加grand:+numerioplusgrand”);
System.out.println(“加上大蒙塔特:“+plusGrand+”€”);
}
}

我想你误解了这一点

double input = scan.nextDouble();
这一行只扫描控制台一次输入,这意味着您的程序只会得到两个结果:

  • 输入0,程序打印所有日志,然后退出
  • 输入双精度0,程序将永远运行,因为输入值不会在循环内更新

您没有解释代码试图做什么,但我可以看到您有
while(input!=0)
但您从未更改循环内的值,因此它将永远不会退出。也许您的
scan.nextDouble()
应该在里面。此外,另一个
while
循环看起来很奇怪,因此这可能是熟悉Java调试器的好时机。代码应该会收到几张账单,一旦输入0,停止循环并显示操作结果:xbut,如果扫描在while内,并且如果用户键入“0”完成,循环将在总输入量上添加“1”,我是否必须在最终结果上添加“-1”?有一种方法可以在循环执行后“重置”以输入新的输入?是的,您可以执行以下操作:
双输入
while((input=scan.nextDouble())>0){
//您的逻辑在这里
}
好了,现在我可以看到结果行了,但是几乎所有的东西都保持在0:x,我很抱歉,我试图理解,但是我不知道您是如何实现它的,但是您应该为从控制台扫描的单个输入执行逻辑。因此,输出值应该取决于您的输入序列。