我需要在每轮结束后总结分数。当我这样做时,它不起作用。它只是输出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);
}
}
答案 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
}
}