负数使用for循环结束程序?

时间:2014-09-26 04:42:12

标签: java loops for-loop

大家好我不太懂得如何使用for循环,因为我们今天刚开始学习它们。我必须为我们之前制作的程序添加for循环。在用户输入负数之前,它必须不断询问狗的年龄。这就是我所拥有的:

import java.util.Scanner;

public class DogYears
{
    public static void main(String [] args)
    {
        Scanner scan = new Scanner(System.in);
        System.out.print("Enter your dog's age in human years: ");
        int age = scan.nextInt();

        int dogAge = age * 7;
        System.out.println("Your dog is " + age + " in human years and "
            + dogAge + " in dog years!");

        if (dogAge >= 150)
            System.out.println("Likely story");
        else if (dogAge >= 80 && dogAge < 150)
            System.out.println("Hello grand-dog");
        else if (dogAge >= 40 && dogAge < 80)
            System.out.println("Boring!");
        else if (dogAge >= 20 && dogAge < 40)
            System.out.println("Get a job!");
        else if (dogAge < 20)
            System.out.println("Just a pup!");
    }
}

3 个答案:

答案 0 :(得分:2)

可以使用for循环。

public static void main(String [] args)
{
    Scanner scan = new Scanner(System.in);
    int age = 1;
    System.out.print("Enter your dog's age in human years: (or a negative number to exit)");
    for(;age>=0;){
       age = scan.nextInt();
       int dogAge = age * 7;
       System.out.println("Your dog is "+age+" in human years and "+dogAge+" in dog years!");
       if(dogAge>=150)System.out.println("Likely story");
       else if (dogAge>=80 && dogAge<150) System.out.println("Hello grand-dog");
       else if(dogAge>=40 && dogAge<80)System.out.println("Boring!");
       else if(dogAge>=20 && dogAge<40)System.out.println("Get a job!");
       else if(dogAge<20)System.out.println("Just a pup!");
    }
}

但是,它不是最好的语法。在这种情况下,while循环会更容易理解。

这可行的原因是for循环语法。

for循环需要3件:

  • 变量
  • 布尔值
  • 增量器

for循环初始化如下所示:

for(var;boolean;incrementer){
     //...
}

但是,实际上并不需要增量器或布尔值甚至变量。

for(;;){/*...*/}是完全有效的代码,会循环直到某个内容出现break;

因此,我们通过在For循环初始化中使用布尔值来利用这一事实。

你甚至可以把它写成:

for(;age>=0;){/*...*/}

只要在for循环之前初始化变量age

答案 1 :(得分:0)

使用For循环:

   for(;age>=0;){
          int dogAge = age * 7;
          System.out.println("Your dog is "+age+" in human years and "+dogAge+" in dog years!");


      if(dogAge>=150)System.out.println("Likely story");
      else if (dogAge>=80 && dogAge<150) System.out.println("Hello grand-dog");
      else if(dogAge>=40 && dogAge<80)System.out.println("Boring!");
      else if(dogAge>=20 && dogAge<40)System.out.println("Get a job!");
      else if(dogAge<20)System.out.println("Just a pup!");
      System.out.print("Enter your dog's age in human years: ");
      age = scan.nextInt();

    }

因为你只有循环的终止条件,所以只使用那个部分。

for(INITIALIZATION; CONDITION; INCREMENT/DECREMENT){
    // Code for the for loop's body
    // goes here.
}

你不必初始化,你不必增加或减少只使用条件部分

答案 2 :(得分:0)

简单地这样做。我知道你已经知道在这段代码中发生了什么,这里的for循环就像一个while循环。如果是的话,还可以尝试使用大括号。这是一个很好的代码实践。

class DogYears {
  public static void main(String[] args) {
    Scanner scan = new Scanner(System.in);
    System.out.print("Enter your dog's age in human years: ");
    int age = scan.nextInt();

    for (; age > 0;) {
        int dogAge = age * 7;
        System.out.println("Your dog is " + age + " in human years and " + dogAge + " in dog years!");
        System.out.println("----------------------------");
        if (dogAge >= 150) {
            System.out.println("Likely story");
        } else if (dogAge >= 80 && dogAge < 150) {
            System.out.println("Hello grand-dog");
        } else if (dogAge >= 40 && dogAge < 80) {
            System.out.println("Boring!");
        } else if (dogAge >= 20 && dogAge < 40) {
            System.out.println("Get a job!");
        } else if (dogAge < 20) {
            System.out.println("Just a pup!");
        }
        System.out.println("----------------------------");
        System.out.print("Enter your dog's age in human years: ");
        age = scan.nextInt();

    }
  }
}

希望这有帮助!