我的程序循环在do while

时间:2016-06-21 00:05:17

标签: java algorithm

我正在尝试学习Java并试图做一个小程序,但我有一个问题,因为我选择了答案时,我会陷入do while循环中。" N" 能帮帮我吗

package calculatrice;

import java.util.Scanner;

public class Main {



    public static void main(String[] args) {

    Calculatrice fonction =new Calculatrice();
    Scanner sr = new Scanner(System.in);
    boolean noury= true;
    boolean Sonia= true;
    String expression = sr.nextLine();

    while(noury)
    {
        if(expression.contains("+"))
        {

            float x = Float.parseFloat(expression.split("\\+")[0]);
            float y = Float.parseFloat(expression.split("\\+")[1]);
            float c = fonction.somme(x, y);
            System.out.println("le resultat " + c);

        }

    if(expression.contains("-"))
        {

            float x = Float.parseFloat(expression.split("\\-")[0]);
            float y = Float.parseFloat(expression.split("\\-")[1]);
            float c = fonction.soustraction(x, y);
            System.out.println("le resultat " + c);

        }

    if(expression.contains("*"))
        {

            float x = Float.parseFloat(expression.split("\\*")[0]);
            float y = Float.parseFloat(expression.split("\\*")[1]);
            float c = fonction.multiplication(x, y);
            System.out.println("le resultat " + c);

        }

    if(expression.contains("/")){

        float x = Float.parseFloat(expression.split("\\/")[0]);
        float y = Float.parseFloat(expression.split("\\/")[1]);
        float c = fonction.divion(x, y);
        System.out.println("le resultat " + c);

    }


    do{
        System.out.println("voulez vous effecteur une autre operation");
        System.out.println("O pour Oui ");
        System.out.println("N pour Non ");
        String choix = sr.nextLine();

        if ((!(choix.equals("O")))&& (!(choix.equals("N"))))
        {
            Sonia =false;
            System.out.println("La valeur saisit n'est pas Correcte veulliez choisir N ou O seulement");
         }
        else if(choix.equals("N"))
           {
            noury=false;
            }
        else
                {
            System.out.println("Entrez une nouvelle valeur à calculer");

                }
        }while(Sonia);
    }

    }

}

3 个答案:

答案 0 :(得分:0)

我不知道任何法语,但似乎noury表示外循环应该继续,而Sonia表示内循环应该继续。外部循环执行主逻辑,而内部循环严格地用于输入用户,所以看起来 - 如果我错了,请纠正我。看来如果输入既不是“N”也不是“O”,你想再次要求输入。在“if”条件下的代码块中,您应该将Sonia保留为true,以便内部循环再次运行。如果输入为“N”,则表示您打算结束程序。在Sonia = false;条件下方的块中设置else if将结束内循环,而noury = false;已存在将导致外循环结束。在else块下,当用户输入“O”表示他们想要运行另一个命令时,将Sonia设置为false,以便内循环结束。最后,在内循环之前设置Sonia = true;。我相信这些步骤将提供您想要的行为。

答案 1 :(得分:0)

您必须在循环中更改为条件(while或do / while)计算的值。 在第二个循环中,您评估值<script type="text/javascript"> window.translations = @(Html.Raw(ViewBag.translations)); </script> ,但更改window.translations["resourceStringXY"] 的值。

提示:使用有意义的变量名称,有助于避免此类错误。并且一些naming conventions确实存在,例如变量(避免Sonia,它看起来像一个类的名称)。

答案 2 :(得分:0)

所以我尽力帮助你 首先,我必须放入String expression =sr.nextLine();的第一个循环 然后我做了什么在seconde循环sonia假,这里是我的变化

`package calculatrice;

import java.util.Scanner;

public class Main {



 public static void main(String[] args) {

 Calculatrice fonction =new Calculatrice();
 Scanner sr = new Scanner(System.in);
 boolean cond1= true;
 boolean cond2= true;


 while(cond1)
 {
   String expression = sr.nextLine();
  if(expression.contains("+"))
  {

   float x = Float.parseFloat(expression.split("\\+")[0]);
   float y = Float.parseFloat(expression.split("\\+")[1]);
   float c = fonction.somme(x, y);
   System.out.println("le resultat " + c);

     }

 if(expression.contains("-"))
  {

   float x = Float.parseFloat(expression.split("\\-")[0]);
   float y = Float.parseFloat(expression.split("\\-")[1]);
   float c = fonction.soustraction(x, y);
   System.out.println("le resultat " + c);

  }

 if(expression.contains("*"))
  {

   float x = Float.parseFloat(expression.split("\\*")[0]);
   float y = Float.parseFloat(expression.split("\\*")[1]);
   float c = fonction.multiplication(x, y);
   System.out.println("le resultat " + c);

  }

 if(expression.contains("/")){

  float x = Float.parseFloat(expression.split("\\/")[0]);
  float y = Float.parseFloat(expression.split("\\/")[1]);
  float c = fonction.divion(x, y);
  System.out.println("le resultat " + c);

 }


 do{
  System.out.println("voulez vous effecteur une autre operation");
  System.out.println("O pour Oui ");
  System.out.println("N pour Non ");
  String choix = sr.nextLine();

  if ((!(choix.equals("O")))&& (!(choix.equals("N"))))
  {
   cond2 =false;
   System.out.println("La valeur saisit n'est pas Correcte veulliez choisir N ou O seulement");
   }
  else if(choix.equals("N"))
     {
   cond1=false;
   }
  else
    {
   System.out.println("Entrez une nouvelle valeur à calculer");
      cond2 = false;
    }
  }while(cond2);
 }

 }

}`