Java,如何使用多字符布尔表达式关闭do-while循环?
Java, How to close do-while loop using multiple character boolean expressions?
这是一个相当新手的问题,但我想知道为什么我的 do...while
循环没有关闭。
程序应该在用户输入不是 'C'、'c'、'F' 或 'f' 时循环。
当 while
部分中只有一个布尔表达式有效时它似乎会关闭,但如果多个有效则不会关闭。
public class CelsToFaren
{
public static void main(String[] args)
{
// scanner setup
Scanner sc = new Scanner(System.in);
// Variable declarations
int celsius;
int answerC;
int farenheit;
int answerF;
char userLetter;
do
{
// initial menu options
System.out.println("Which temperature would you like to convert from? ");
System.out.println(" >(C)elsius ");
System.out.println(" >(F)arenheit ");
// user input of C, c, F, or f to select option
userLetter = sc.next().charAt(0);
// if user input C or c
if ((userLetter == 'C' || userLetter == 'c'))
{
System.out.print("Please enter the temperature: ");
celsius = sc.nextInt();
answerC = ((celsius*9/5)+32);
System.out.println("The answer is: " + answerC + " Farenheit ");
}
else
{
// if user input F or f
if ((userLetter == 'F' || userLetter == 'f'))
{
System.out.print("Please enter the temperature: ");
farenheit = sc.nextInt();
answerF = ((farenheit-32)*5/9);
System.out.println("The answer is: " + answerF + " Celsius ");
}
else
{
// if user input not F, f, C, or c
if ((userLetter != 'F' || userLetter != 'f' || userLetter != 'C' || userLetter != 'c'));
{
System.out.println("Please enter a valid option");
}
}
}
} while ((userLetter != 'c') || (userLetter != 'C') || (userLetter != 'f') || (userLetter != 'F'));
}
}
您需要更改退出逻辑。
在你的情况下 1 | 0 | 0 = true
所以循环继续。
您需要将其更改为:
while ((userLetter != 'c') && (userLetter != 'C') && (userLetter != 'f') && (userLetter != 'F'));
你的条件不对。让我们假设你想在 if 语句中打破循环。看起来像
if(userLetter == 'c' || userLetter == 'C' || userLetter == 'f' || userLetter == 'F')
现在让我们应用否定来获得不需要退出循环的条件
if(!(userLetter == 'c' || userLetter == 'C' || userLetter == 'f' || userLetter == 'F'))
这个条件类似于
if(userLetter != 'c' && userLetter != 'C' && userLetter != 'f' && userLetter != 'F')
这是一个相当新手的问题,但我想知道为什么我的 do...while
循环没有关闭。
程序应该在用户输入不是 'C'、'c'、'F' 或 'f' 时循环。
当 while
部分中只有一个布尔表达式有效时它似乎会关闭,但如果多个有效则不会关闭。
public class CelsToFaren
{
public static void main(String[] args)
{
// scanner setup
Scanner sc = new Scanner(System.in);
// Variable declarations
int celsius;
int answerC;
int farenheit;
int answerF;
char userLetter;
do
{
// initial menu options
System.out.println("Which temperature would you like to convert from? ");
System.out.println(" >(C)elsius ");
System.out.println(" >(F)arenheit ");
// user input of C, c, F, or f to select option
userLetter = sc.next().charAt(0);
// if user input C or c
if ((userLetter == 'C' || userLetter == 'c'))
{
System.out.print("Please enter the temperature: ");
celsius = sc.nextInt();
answerC = ((celsius*9/5)+32);
System.out.println("The answer is: " + answerC + " Farenheit ");
}
else
{
// if user input F or f
if ((userLetter == 'F' || userLetter == 'f'))
{
System.out.print("Please enter the temperature: ");
farenheit = sc.nextInt();
answerF = ((farenheit-32)*5/9);
System.out.println("The answer is: " + answerF + " Celsius ");
}
else
{
// if user input not F, f, C, or c
if ((userLetter != 'F' || userLetter != 'f' || userLetter != 'C' || userLetter != 'c'));
{
System.out.println("Please enter a valid option");
}
}
}
} while ((userLetter != 'c') || (userLetter != 'C') || (userLetter != 'f') || (userLetter != 'F'));
}
}
您需要更改退出逻辑。
在你的情况下 1 | 0 | 0 = true
所以循环继续。
您需要将其更改为:
while ((userLetter != 'c') && (userLetter != 'C') && (userLetter != 'f') && (userLetter != 'F'));
你的条件不对。让我们假设你想在 if 语句中打破循环。看起来像
if(userLetter == 'c' || userLetter == 'C' || userLetter == 'f' || userLetter == 'F')
现在让我们应用否定来获得不需要退出循环的条件
if(!(userLetter == 'c' || userLetter == 'C' || userLetter == 'f' || userLetter == 'F'))
这个条件类似于
if(userLetter != 'c' && userLetter != 'C' && userLetter != 'f' && userLetter != 'F')