如何在循环中计算得分?

时间:2017-05-28 23:02:32

标签: java

我需要在每轮结束后总结分数。当我这样做时,它不起作用。它只是输出if语句下的点系统。帮助和解释将非常有帮助!谢谢你介绍Java编码器。

public class J1 {
    public static void main(String args[]) {
       // create random object
       java.util.Random rand = new java.util.Random();
       java.util.Scanner scanner = new java.util.Scanner(System.in); 

        // check next int value  
        System.out.println("Wall height: " + rand.nextInt(10));
        double height = rand.nextInt(10);

        System.out.println("Distance from wall: " + rand.nextInt(20));
            double dist = rand.nextInt(20);

        for(int i = 1; i > 0; i++) {

            System.out.println("Set a lanuch angle between 0 and 90: ");
                double angle = scanner.nextDouble();
            System.out.println("Set a lanuch speed: ");
                double speed = scanner.nextDouble();

            double point;
            double a;
            double b;
            double c;
            double d;
            //double e;
            double y;
            a = dist*(Math.tan(Math.toRadians(angle))); 
            b = 9.81*(dist*dist); 
            c = (speed * Math.cos(angle)) * (speed * Math.cos(Math.toRadians(angle)));
            d = 2*c;
            y = a - (b/d);
            System.out.println("Your max height is " +y+ " high");

            double space;
            space = height - y;

            if(space <= 3 && space > 0) {
                System.out.println("You just made it! ");
                point = 0 - 1 + 3;
                System.out.println("You have " +point+ " points.");
            }

            if (space > 3 && space <= 6) {
                System.out.println("Aww. Plenty of room!");
                point = 0 - 1 + 5;
                System.out.println("You have " +point+ " points.");
            }

            if(space <= 0 && space >= -3) {
                System.out.println("So close!");
                point = 0 - 1 - 2; 
                System.out.println("You have " +point+ " points.");
            }

            if (space < -3) {
                System.out.println("Terrible aim!");
                point = 0 - 1 - 4;
                System.out.println("You have " +point+ " points.");
            }
        }    

        System.out.println("Your total points: " +point);
    }
}

1 个答案:

答案 0 :(得分:2)

point变量的声明需要在for循环之外进行,以便可以在代码末尾进行打印。

for(int i = 1; i > 0; i++) { ... }循环也会无限期地运行,这意味着永远不会到达最后的System.out.println("Your total points: " +point);行。您需要修复for循环,以便它只运行有限次数。

每轮结束后的点数永远不会添加到if部分的总计中,您需要更改语句,以便point +=代替point =

我在下面的代码中添加了一些注释,以便您可以查看已进行的更改。我也在最后关闭扫描仪,这是常见的做法,并为了清晰起见修复了代码缩进:

public class J1
{
    public static void main( String args[] )
    {
       // create random object
       java.util.Random rand = new java.util.Random();
       java.util.Scanner scanner = new java.util.Scanner(System.in); 

       // check next int value  
       System.out.println("Wall height: " + rand.nextInt(10));
       double height = rand.nextInt(10);

       System.out.println("Distance from wall: " + rand.nextInt(20));
       double dist = rand.nextInt(20);

       double point = 0; //ADD THIS LINE
       for(int i = 1; i < 10; i++) //CHANGED SO THAT i < 10 INSTEAD OF i > 0
       {
           System.out.println("Set a lanuch angle between 0 and 90: ");
           double angle = scanner.nextDouble();
           System.out.println("Set a lanuch speed: ");
           double speed = scanner.nextDouble();

           //double point; *** REMOVE THIS LINE ***
           double a;
           double b;
           double c;
           double d;
           //double e;
           double y;
           a = dist*(Math.tan(Math.toRadians(angle))); 
           b = 9.81*(dist*dist); 
           c = (speed * Math.cos(angle)) * (speed * Math.cos(Math.toRadians(angle)));
           d = 2*c;
           y = a - (b/d);
           System.out.println("Your max height is " +y+ " high");

           double space;
           space = height - y;

           if(space <= 3 && space > 0)
           {
               System.out.println("You just made it! ");
               point += 0 - 1 + 3; //ADDED += INSTEAD OF =
               System.out.println("You have " +point+ " points.");
           }

           if(space > 3 && space <= 6)
           {
               System.out.println("Aww. Plenty of room!");
               point += 0 - 1 + 5; //ADDED += INSTEAD OF =
               System.out.println("You have " +point+ " points.");
           }

           if(space <= 0 && space >= -3)
           {
               System.out.println("So close!");
               point += 0 - 1 - 2; //ADDED += INSTEAD OF =
               System.out.println("You have " +point+ " points.");
           }

           if(space < -3)
           {
               System.out.println("Terrible aim!");
               point += 0 - 1 - 4; //ADDED += INSTEAD OF =
               System.out.println("You have " +point+ " points.");
           }
        }  
        System.out.println("Your total points: " +point);
        scanner.close(); //ADD THIS LINE
    }
}