if 在 while 循环中嵌套
Nested if in while loop
我在执行 while
循环时遇到了一些问题。 if 语句按预期工作,但从扫描器返回的 char 值没有进入我的 while 循环。有人知道我做错了什么或对我的程序有更好的解决方案吗?
package classWork;
import java.util.Scanner;
public class project_2 {
public static void main(String[] args){
Scanner input = new Scanner(System.in);
int choice = 0;
double celsius, fahrenheit, inches, centimeters;
char doAgain = 'y';
while (doAgain == 'y' || doAgain == 'Y')
{
System.out.print(" Main Menu \n 1. Celsius to Fahrenheit \n 2. Inches to Centimeters \n"
+ "Please select either 1 or 2 \nThen press enter to continue");
choice = input.nextInt();
if (choice == 1)
{
System.out.println("This program will convert a celsius value into a fahrenheit one. \n");
System.out.println("Please enter the tempature for conversion: ");
celsius = input.nextInt();
fahrenheit = 1.8 * celsius + 32.0;
System.out.println(celsius + " degree(s) in celcius" + " is " + fahrenheit +
" in fahrenheit. \n");
System.out.println("Do you want to continue?\n: " +
"enter a \'y \' for another round\n " +
" enter a\'n\' to end the program\n");
doAgain = input.next().charAt(0);
input.close();
return;
}
if (choice == 2)
{
System.out.println("This program will convert inches to centimeters. \n");
System.out.println("Please enter the length for conversion: ");
inches = input.nextInt();
centimeters = 2.54 * inches;
System.out.println(inches + " inches is " + centimeters + " centimeters. \n");
System.out.println("Do you want to continue?\n: " +
"enter a \'y \' for another round\n " +
" enter a\'n\' to end the program\n");
doAgain = input.next().charAt(0);
input.close();
return;
}
else
{
System.out.println("That is not a valid option. Please restart and try again");
input.close();
}
}
}
}
您需要删除 return ,它会完成主线程的执行
你的程序实际上有3个问题
1。不要调用return
继续迭代
在 2 个 if
块的末尾,您调用 return
这会使您的应用程序退出 main
方法,因此退出您的应用程序实际上是您当前的问题。
所以只需删除它们或使用 continue
代替。
2。不要打电话close
继续阅读
在 2 个 if
块的末尾,您调用 input.close()
关闭扫描器,这样您以后将无法阅读任何内容而没有得到 IllegalStateException
。
所以简单地删除它们。
3。第二个 if
应该是 else if
您的代码应该是:
if (choice == 1)
{
...
}
else if (choice == 2)
{
...
}
else
{
...
}
否则,如果您的第一选择是 1
,那么您键入 y
进行迭代,您的应用程序将进入 else
,因为 choice != 2
将 close
扫描仪,因为它被错误地视为无效选项。
我在执行 while
循环时遇到了一些问题。 if 语句按预期工作,但从扫描器返回的 char 值没有进入我的 while 循环。有人知道我做错了什么或对我的程序有更好的解决方案吗?
package classWork;
import java.util.Scanner;
public class project_2 {
public static void main(String[] args){
Scanner input = new Scanner(System.in);
int choice = 0;
double celsius, fahrenheit, inches, centimeters;
char doAgain = 'y';
while (doAgain == 'y' || doAgain == 'Y')
{
System.out.print(" Main Menu \n 1. Celsius to Fahrenheit \n 2. Inches to Centimeters \n"
+ "Please select either 1 or 2 \nThen press enter to continue");
choice = input.nextInt();
if (choice == 1)
{
System.out.println("This program will convert a celsius value into a fahrenheit one. \n");
System.out.println("Please enter the tempature for conversion: ");
celsius = input.nextInt();
fahrenheit = 1.8 * celsius + 32.0;
System.out.println(celsius + " degree(s) in celcius" + " is " + fahrenheit +
" in fahrenheit. \n");
System.out.println("Do you want to continue?\n: " +
"enter a \'y \' for another round\n " +
" enter a\'n\' to end the program\n");
doAgain = input.next().charAt(0);
input.close();
return;
}
if (choice == 2)
{
System.out.println("This program will convert inches to centimeters. \n");
System.out.println("Please enter the length for conversion: ");
inches = input.nextInt();
centimeters = 2.54 * inches;
System.out.println(inches + " inches is " + centimeters + " centimeters. \n");
System.out.println("Do you want to continue?\n: " +
"enter a \'y \' for another round\n " +
" enter a\'n\' to end the program\n");
doAgain = input.next().charAt(0);
input.close();
return;
}
else
{
System.out.println("That is not a valid option. Please restart and try again");
input.close();
}
}
}
}
您需要删除 return ,它会完成主线程的执行
你的程序实际上有3个问题
1。不要调用return
继续迭代
在 2 个 if
块的末尾,您调用 return
这会使您的应用程序退出 main
方法,因此退出您的应用程序实际上是您当前的问题。
所以只需删除它们或使用 continue
代替。
2。不要打电话close
继续阅读
在 2 个 if
块的末尾,您调用 input.close()
关闭扫描器,这样您以后将无法阅读任何内容而没有得到 IllegalStateException
。
所以简单地删除它们。
3。第二个 if
应该是 else if
您的代码应该是:
if (choice == 1)
{
...
}
else if (choice == 2)
{
...
}
else
{
...
}
否则,如果您的第一选择是 1
,那么您键入 y
进行迭代,您的应用程序将进入 else
,因为 choice != 2
将 close
扫描仪,因为它被错误地视为无效选项。