Java 我的程序在do while中循环
我正在尝试学习Java并尝试编写小程序,但我在这方面有一个小问题,因为当我选择答案“N”时,我陷入了do-while循环 你能帮帮我吗Java 我的程序在do while中循环,java,algorithm,Java,Algorithm,我正在尝试学习Java并尝试编写小程序,但我在这方面有一个小问题,因为当我选择答案“N”时,我陷入了do-while循环 你能帮帮我吗 package calculatrice; import java.util.Scanner; public class Main { public static void main(String[] args) { Calculatrice fonction =new Calculatrice(); Scanner sr =
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);
}
}
}
我不懂法语,但似乎
noury
表示外循环应该继续,而Sonia
表示内循环应该继续。外部循环执行主逻辑,而内部循环严格地获取用户输入,因此,如果我错了,请纠正我。如果输入既不是“N”也不是“O”,则您希望再次请求输入。在“if”条件下的代码块中,您应该将Sonia
保留为true,以便内部循环再次运行。如果输入为“N”,则表明您打算结束程序。设置Sonia=false您的下的块中的code>,否则if
条件将结束内部循环,并且noury=false代码>已存在将导致外部循环结束。在else块下,当用户输入“O”以指示他们想要运行另一个命令时,将Sonia
设置为false,以便内部循环结束。最后,设置Sonia=true代码>在内部循环之前。我相信这些步骤将提供您想要的行为。您必须更改循环中条件(while或do/while)的评估值。
在第二个循环中,您计算的值Sonia
,但更改的值noury
提示:使用有意义的变量名,有助于避免此类错误。有些确实存在,例如变量(避免Sonia
,它看起来像一个类的名称) 所以我在你的帮助下成功了
首先,我必须将String expression=sr.nextLine()放入第一个循环中代码>
然后我在第二个循环中做了什么sonia对false这里是我的改变
`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);
}
}
}`
循环将继续,直到Sonia
为false,这仅在输入O
或N
以外的内容时才会发生。试试X
。内部循环有什么意义?如果要一直问,直到你得到“O”或“N”,这与你所做的正好相反。旁注:所有这些嵌套的括号都是不必要的。这同样有效:如果(!choix.equals(“O”)和(!choix.equals(“N”))
顺便说一下,一旦Sonia
设置为false,这再也不会是真的了。你好,shmosel谢谢你的快速回答,我会试试你问的,试着让Sonia和我的循环更好Hello Daniel谢谢你的快速回答是的,你是对的,所以我问他是否愿意做其他动作,就像你说的外循环(与noury的while循环)如果用户输入“N”,程序就会结束,但是如果他输入了“O”,他可以输入新的表达式来计算。但是如果既不是“N”也不是“O”,它会要求他再次输入,而这是在do-while循环中发生的。我会试试你说的和你知道的。