Java 为什么嵌套的if语句不将int变量向上迭代1? 我想做什么
当输入超出范围时,我希望if语句布尔向上迭代变量 问题 我输入的要由if语句检查的数字似乎不起作用。如果输入的3个数字小于-6.0或大于12.3,则记录故障,但我使用的Java 为什么嵌套的if语句不将int变量向上迭代1? 我想做什么,java,if-statement,java.util.scanner,Java,If Statement,Java.util.scanner,当输入超出范围时,我希望if语句布尔向上迭代变量 问题 我输入的要由if语句检查的数字似乎不起作用。如果输入的3个数字小于-6.0或大于12.3,则记录故障,但我使用的int变量似乎从未改变 我试过的 我尝试过切换迭代顺序,只使用+1,但“failures”变量始终保持在0 import java.util.Scanner; 公开课考试{ 公共静态void main(字符串[]args){ 字符串输入=“a”; 双aNum1; 双aNum2; 双aNum3; int-aFailures=0; 扫
int
变量似乎从未改变
我试过的
我尝试过切换迭代顺序,只使用+1,但“failures”变量始终保持在0
import java.util.Scanner;
公开课考试{
公共静态void main(字符串[]args){
字符串输入=“a”;
双aNum1;
双aNum2;
双aNum3;
int-aFailures=0;
扫描仪scnr=新扫描仪(System.in);
//特里克斯
while(true){
System.out.println(“请输入命令:”);
input=scnr.next();
if(输入等于(“a”)){
System.out.println(“输入数字1:”);
aNum1=序列号nextDouble();
System.out.println(“输入数字2:”);
aNum2=序列号nextDouble();
System.out.println(“输入数字3:”);
aNum3=序列号nextDouble();
如果(aNum1=12.3){
++失败;
}
如果(aNum2=12.3){
++失败;
}
如果(aNum3=12.3){
++失败;
}
}
if(输入等于(“f”)){
System.out.println(“Azuview故障:+A故障”);
打破
}
}
}
}
当我输入布尔条件以外的数字时,我希望系统输出“Azuview failures 2”,但程序似乎没有识别出输入超出范围。“aFailures”从0开始,但从不从if语句更改…当您确实应该使用|
(OR)时,&&
(AND)运算符正在if
语句中使用aNum1=12.3
永远不会计算为真,因为一个数字显然不能同时小于或等于-6.0和大于或等于12.3
至于程序的其余部分,我决定使用for
循环,而不是使用三个单独的int来检查相同的条件三次
public static void main(String[] args) {
String input = "a";
int aFailures = 0;
Scanner scnr = new Scanner(System.in);
while (true) {
System.out.println("Please enter a command:");
input = scnr.next();
if (input.equals("a")) {
for (int i = 1; i <= 3; i++) {
System.out.println("Enter number " + i + ": ");
double num = scnr.nextDouble();
if (num <= -6.0 || num >= 12.3)
aFailures++;
}
} else if (input.equals("f")) {
System.out.println("Azuview failures: " + aFailures);
break;
}
}
scnr.close();
}
publicstaticvoidmain(字符串[]args){
字符串输入=“a”;
int-aFailures=0;
扫描仪scnr=新扫描仪(System.in);
while(true){
System.out.println(“请输入命令:”);
input=scnr.next();
if(输入等于(“a”)){
对于(int i=1;i当您确实应该使用|
(OR)时,&&
(AND)运算符正在您的if
语句中使用。aNum1=12.3
将永远不会计算为true,因为数字显然不能同时小于或等于-6.0和大于或等于12.3
至于程序的其余部分,我决定使用for
循环,而不是使用三个单独的int来检查相同的条件三次
public static void main(String[] args) {
String input = "a";
int aFailures = 0;
Scanner scnr = new Scanner(System.in);
while (true) {
System.out.println("Please enter a command:");
input = scnr.next();
if (input.equals("a")) {
for (int i = 1; i <= 3; i++) {
System.out.println("Enter number " + i + ": ");
double num = scnr.nextDouble();
if (num <= -6.0 || num >= 12.3)
aFailures++;
}
} else if (input.equals("f")) {
System.out.println("Azuview failures: " + aFailures);
break;
}
}
scnr.close();
}
publicstaticvoidmain(字符串[]args){
字符串输入=“a”;
int-aFailures=0;
扫描仪scnr=新扫描仪(System.in);
while(true){
System.out.println(“请输入命令:”);
input=scnr.next();
if(输入等于(“a”)){
对于(int i=1;i而言,问题在于使用&&
(逻辑与)而不是|
(逻辑或)
我对您的代码进行了一点压缩,现在我们要求3次获取一个数字,如果数字在范围内,我们什么也不做,否则,我们迭代a失败
import java.util.Scanner;
公共班机{
专用静态布尔校验范围(双输入){
返回输入=12.3;
}
公共静态void main(字符串[]args){
字符串输入;
int-aFailures=0;
扫描仪scnr=新扫描仪(System.in);
while(true){
System.out.println(“请输入命令:”);
input=scnr.next();
if(输入等于(“a”)){
对于(int i=1;i而言,问题在于使用&&
(逻辑与)而不是|
(逻辑或)
我对您的代码进行了一点压缩,现在我们要求3次获取一个数字,如果数字在范围内,我们什么也不做,否则,我们迭代a失败
import java.util.Scanner;
公共班机{
专用静态布尔校验范围(双输入){
返回输入=12.3;
}
公共静态void main(字符串[]args){
字符串输入;
int-aFailures=0;
扫描仪scnr=新扫描仪(System.in);
while(true){
System.out.println(“请输入命令:”);
input=scnr.next();
if(输入等于(“a”)){
对于(inti=1;我试着想一个数字,它会使aNum1=12.3
成为真的。我想你的意思是使用|
。你的if条件不是说如果aNum小于-6.0且大于12.3……这怎么可能是真的?应该是相反的吗?@MarsAtomic我真的不明白这是怎么回事nt.是的,这是我在另一个选项卡上打开的一个问题。我撤回了投票,但评论保留了下来。试着想想一个数字,它会使aNum1=12.3
成为真的。我想你的意思是使用|
。你的if条件不是说如果aNum小于-6.0且大于12.3…这怎么可能是真的“他们应该反过来吗?”MarsAtomic我真的不明白这有什么关系。是的,这是我在另一个标签上打开的一个问题。我撤回了投票,但评论保留了下来。