向现有 java 程序添加循环?
Adding loops to an existing java program?
我需要修改我的程序,以便在需要时可以多次 运行 它。如果用户输入 Q 或 q 并且输入请求的条目(或退出命令)以外的任何内容,我需要退出程序,问题将重复出现。
这是我到目前为止的代码:
import java.util.Scanner;
public class TemperatureLoop
{
private static Scanner keyboard = new Scanner(System.in);
public static void main(String[] args)
{
System.out.println("Enter a temperature in degrees (for example 32.6): ");
double temp;
temp = keyboard.nextDouble();
System.out.println("Enter 'F' (or 'f') for Fahrenheit or 'C' (or 'c') for Celsius: ");
String letter = keyboard.next();
double total = 0;
//if Farenheit then do this equation
if (letter.equals("F") || (letter.equals("f")))
{
total = ((temp-32)*5)/9; //convert the entered temperature to Celsius
System.out.println(temp + " degrees F = " + total + " degrees Celsius");
}
else //if Celsius then do this
if (letter.equals("C") || (letter.equals("c")) )
{
total = (((temp*9))/5)+32; //convert the entered temperature to Farenheit
System.out.println(temp + " degrees C = " + total + " degrees Fahrenheit");
}
}
}
在这种情况下,您应该使用 do-while
循环,
String letter = "";
do{
System.out.println("Enter a temperature in degrees (for example 32.6): ");
double temp = 0;
while(true){
if(keyboard.hasNextDouble())
{
temp = keyboard.nextDouble();
break;
}
else
{
System.out.println("Enter a valid double");
sc.nextLine();
}
}
System.out.println("Enter 'F' (or 'f') for Fahrenheit or 'C' (or 'c') for Celsius: ");
letter = keyboard.next();
double total = 0;
//if Farenheit then do this equation
if (letter.equalsIgnoreCase("F"))
{
total = ((temp-32)*5)/9; //convert the entered temperature to Celsius
System.out.println(temp + " degrees F = " + total + " degrees Celsius");
}
else if (letter.equalsIgnoreCase("C"))
{ //if Celsius then do this
total = (((temp*9))/5)+32; //convert the entered temperature to Farenheit
System.out.println(temp + " degrees C = " + total + " degrees Fahrenheit");
}
}while(!letter.equalsIgnoreCase("Q"));
循环的工作原理是,do
部分中的任何内容都将始终至少执行 一次 。然后它会检查 while
条件来决定是否再次执行 do
部分。正如您所说,一旦用户输入 Q
或 q
,程序就会结束,因为 while 条件的计算结果为 false,do
部分将不再执行。因此,在这种情况下循环将终止。
当您输入 Q
或 q
时究竟会发生什么? do
部分在技术上会发生,但您的 if-statements 将被忽略,因为它不满足这些条件。一旦达到 while
检查,条件将评估为 false,导致循环结束。如果您输入类似 M
或 g
的内容,则 if-statements 将被忽略,但循环不会结束,因为 while
条件不会计算为 false,因此程序将再次询问您温度和度数。
我建议将您拥有的内容放入 while 循环中,如果用户输入 'Q' 或 'q',该循环就会中断。类似于以下内容:
// Declare your breaking condition variable outside the while loop
boolean done = false;
while (!done){
// Your existing code here
// A conditional to check for 'Q' or 'q'
// set done to true if the above line evaluates as true.
}
我需要修改我的程序,以便在需要时可以多次 运行 它。如果用户输入 Q 或 q 并且输入请求的条目(或退出命令)以外的任何内容,我需要退出程序,问题将重复出现。 这是我到目前为止的代码:
import java.util.Scanner;
public class TemperatureLoop
{
private static Scanner keyboard = new Scanner(System.in);
public static void main(String[] args)
{
System.out.println("Enter a temperature in degrees (for example 32.6): ");
double temp;
temp = keyboard.nextDouble();
System.out.println("Enter 'F' (or 'f') for Fahrenheit or 'C' (or 'c') for Celsius: ");
String letter = keyboard.next();
double total = 0;
//if Farenheit then do this equation
if (letter.equals("F") || (letter.equals("f")))
{
total = ((temp-32)*5)/9; //convert the entered temperature to Celsius
System.out.println(temp + " degrees F = " + total + " degrees Celsius");
}
else //if Celsius then do this
if (letter.equals("C") || (letter.equals("c")) )
{
total = (((temp*9))/5)+32; //convert the entered temperature to Farenheit
System.out.println(temp + " degrees C = " + total + " degrees Fahrenheit");
}
}
}
在这种情况下,您应该使用 do-while
循环,
String letter = "";
do{
System.out.println("Enter a temperature in degrees (for example 32.6): ");
double temp = 0;
while(true){
if(keyboard.hasNextDouble())
{
temp = keyboard.nextDouble();
break;
}
else
{
System.out.println("Enter a valid double");
sc.nextLine();
}
}
System.out.println("Enter 'F' (or 'f') for Fahrenheit or 'C' (or 'c') for Celsius: ");
letter = keyboard.next();
double total = 0;
//if Farenheit then do this equation
if (letter.equalsIgnoreCase("F"))
{
total = ((temp-32)*5)/9; //convert the entered temperature to Celsius
System.out.println(temp + " degrees F = " + total + " degrees Celsius");
}
else if (letter.equalsIgnoreCase("C"))
{ //if Celsius then do this
total = (((temp*9))/5)+32; //convert the entered temperature to Farenheit
System.out.println(temp + " degrees C = " + total + " degrees Fahrenheit");
}
}while(!letter.equalsIgnoreCase("Q"));
循环的工作原理是,do
部分中的任何内容都将始终至少执行 一次 。然后它会检查 while
条件来决定是否再次执行 do
部分。正如您所说,一旦用户输入 Q
或 q
,程序就会结束,因为 while 条件的计算结果为 false,do
部分将不再执行。因此,在这种情况下循环将终止。
当您输入 Q
或 q
时究竟会发生什么? do
部分在技术上会发生,但您的 if-statements 将被忽略,因为它不满足这些条件。一旦达到 while
检查,条件将评估为 false,导致循环结束。如果您输入类似 M
或 g
的内容,则 if-statements 将被忽略,但循环不会结束,因为 while
条件不会计算为 false,因此程序将再次询问您温度和度数。
我建议将您拥有的内容放入 while 循环中,如果用户输入 'Q' 或 'q',该循环就会中断。类似于以下内容:
// Declare your breaking condition variable outside the while loop
boolean done = false;
while (!done){
// Your existing code here
// A conditional to check for 'Q' or 'q'
// set done to true if the above line evaluates as true.
}