不确定要使用什么循环

时间:2014-03-27 21:24:08

标签: java loops for-loop while-loop

编辑:只想对所有迄今为止帮助过的人表示感谢!我是Java新手,我的教授推荐这个网站寻求外界的帮助。到目前为止一直很棒。我将花一些时间研究代码并实施我收到的建议。谢谢!

我正在尝试创建一个程序,将温度从华氏度转换为摄氏度,反之亦然。如果用户没有输入正确的单位,程序将循环返回并要求他们重新进入单位或输入Q退出程序。这就是我到目前为止所做的:

我的想法是将一个循环合并到我的switch语句的默认部分,但我不确定使用哪个循环(可能是?)会循环回来并要求用户重新输入单位或Q放弃。任何帮助真的非常感谢!我已经被困在这几个小时了!

System.out.print("\tEnter 'F' (or 'f') for Fahrenheit or " 
            + "'C' (or 'c') for Celcius: ");
f_or_c = console.next();

double fahrenheit = 5*(temperature-32)/9;
double celcius = (9*(temperature)/5)+32;

switch (f_or_c) {
    case "C":
        case "c":
        System.out.println("\n\t" + temperature + " " + " degrees Celcius "
        + "= " + celcius + " degrees Fahrenheit.");
        break;
    case "F":
        case "f":
        System.out.println("\n\t" + temperature + " " + " degrees Fahrenheit "
        + "= " + fahrenheit + " degrees Celcius.");
        break;
    default: 
        System.out.println("\n\tUnknown units -"
        + "\n\tCannot do calculation -"
        + "\n\tPlease next time enter either 'F' for Fahrenheit or 'C' Celcius");
        System.out.print("\nEnter 'Q' to quit or " +
    "any other character to perform another temperature conversion: ");
       break;

5 个答案:

答案 0 :(得分:0)

你可以使用while循环。有更好的方法来做到这一点。但只是帮助您使用代码。

 System.out.print("\tEnter 'F' (or 'f') for Fahrenheit or " 
        + "'C' (or 'c') for Celcius: ");
 f_or_c = console.next();
 boolean flag=false;
 double fahrenheit = 5*(temperature-32)/9;
 double celcius = (9*(temperature)/5)+32;
 while(true) {
  switch (f_or_c) {
      case "C":
      case "c":
           System.out.println("\n\t" + temperature + " " + " degrees Celcius "
            + "= " + celcius + " degrees Fahrenheit.");
           flag=false;
           break;
     case "F":
     case "f":
           System.out.println("\n\t" + temperature + " " + " degrees Fahrenheit "
             + "= " + fahrenheit + " degrees Celcius.");
           flag=false;
           break;
     default: 
           System.out.println("\n\tUnknown units -"
           + "\n\tCannot do calculation -"
           + "\n\tPlease next time enter either 'F' for Fahrenheit or 'C' Celcius");
           System.out.print("\nEnter 'Q' to quit or " +
          "any other character to perform another temperature conversion: ");
          flag=true;
          break;
     }
    if(flag) 
        continue;
    break;
 }

答案 1 :(得分:0)

让我们通过逻辑思考:你想循环直到用户输入正确的输入。那么,这是否意味着在开始循环之前你会知道循环应迭代多少次?这是关键。

一旦你知道这些信息,正确的循环就会失败,因为:

    当你事先知道循环次数时,会使用
  • for循环。
  • 虽然循环适用于您事先不知道此信息的情况。

答案 2 :(得分:0)

将switch语句放入方法中,然后针对默认情况调用该方法。它正在使用递归,但请记住,如果将来使用递归,请确保它不会无限循环,否则会出现堆栈溢出错误。

答案 3 :(得分:0)

do{}while()怎么样?

boolean badInput;
do {

    badInput = false;
    System.out.print("\tEnter 'F' (or 'f') for Fahrenheit or " 
                + "'C' (or 'c') for Celcius: ");
    f_or_c = console.next();

    double fahrenheit = 5*(temperature-32)/9;
    double celcius = (9*(temperature)/5)+32;

    switch (f_or_c) {
        case "C":
            case "c":
            System.out.println("\n\t" + temperature + " " + " degrees Celcius "
            + "= " + celcius + " degrees Fahrenheit.");
            break;
        case "F":
            case "f":
            System.out.println("\n\t" + temperature + " " + " degrees Fahrenheit "
            + "= " + fahrenheit + " degrees Celcius.");
            break;
        default: 
            System.out.println("\n\tUnknown units -"
            + "\n\tCannot do calculation -"
            + "\n\tPlease next time enter either 'F' for Fahrenheit or 'C' Celcius");
            System.out.print("\nEnter 'Q' to quit or " +
        "any other character to perform another temperature conversion: ");
           badInput = true; //we got bad input so we'll continue looping
           break;

} while(badInput);

基本上我们在开始时将badInput设置为false,假设它是好的输入。如果我们最终得到错误的输入,我们会badInput为真,所以我们将继续循环。

do-whilewhile循环之间的一般区别是do-while用于要至少执行一次的代码。它在这种情况下运行良好,因为您知道您想要至少读取一次输入。

在我的示例中,变量badInput称为flag。基本上,一个标志只是一个变量,可以跟踪某些事情是否在" on"或"关闭"。在这种情况下,badInput正在跟踪我们是否输入错误。这是一个简单的" on" " off"," true" "假"场景。

答案 4 :(得分:0)

我可能会在这里改变你的思维方式,但我会以不同的方式实施它。绕开关盒缠绕一圈。这将确保使用下一个用户输入值重新执行开关案例。我已经包含了一个它可能是什么样子的例子。请注意,我还没有包含输入代码,因为有很多选项供您使用。此外,我还没有包含退出代码,它只会打破循环。

bool repeat = TRUE;
while (repeat)
{
 switch (f_or_c) 
 {
  case "C":
      case "c":
      System.out.println("\n\t" + temperature + " " + " degrees Celcius "
      + "= " + celcius + " degrees Fahrenheit.");
      repeat = FALSE;
      break;
  case "F":
     case "f":
     System.out.println("\n\t" + temperature + " " + " degrees Fahrenheit "
     + "= " + fahrenheit + " degrees Celcius.");
     repeat = FALSE;
     break;
  case "Q":
     ***YOUR CODE TO QUIT***
     repeat = FALSE;
     break;
  default: 
     System.out.println("\n\tUnknown units -"
     + "\n\tCannot do calculation -"
     + "\n\tPlease next time enter either 'F' for Fahrenheit or 'C' Celcius");
     System.out.print("\nEnter 'Q' to quit or " +
     "any other character to perform another temperature conversion: ");
     ***CODE TO PROMPT USER FOR  F_OR_C VALUE***
     repeat = TRUE;
     break; 
  }
}