【发布时间】:2021-01-29 23:21:51
【问题描述】:
我正在制作一个星球探索文字游戏,你可以从 5 个不同的星球中进行选择,每个星球都比它上面的那个更难,但也更足智多谋。我有 Int 变量:“D1D”,作为危险值,它是随机的。我有一个死亡屏幕的东西,如果 D1D = 1 就会激活,但它一直说它找不到 D1D? (我正在使用 JDoodle)
import java.lang.Math;
import java.util.Scanner;
public class PlanetExplorer {
public static void main(String[] args) {
//Planets:
System.out.println("Explorable Planets: ");
System.out.println(" ");
System.out.println("Mars: ");
System.out.println("Resorces: 50 ");
System.out.println("Danger: 10%");
System.out.println(" ");
System.out.println("Jupiter: ");
System.out.println("Resorces: 75 ");
System.out.println("Danger: 50%");
System.out.println(" ");
System.out.println("Titan: ");
System.out.println("Resorces: 50 ");
System.out.println("Danger: 30%");
System.out.println(" ");
System.out.println("Uranus: ");
System.out.println("Resorces: 100 ");
System.out.println("Danger: 60%");
System.out.println(" ");
System.out.println("Neptune: ");
System.out.println("Resorces: 150 ");
System.out.println("Danger: 75%");
//Detecting the planet
Scanner Planet1 = new Scanner(System.in);
String P1 = Planet1.next();
// D_R = Day (1-5) Resources
// D_D = Day (1-5) Danger
//If Mars:
if ((P1.equals("Mars"))) {
int min = 1;
int max = 90;
int range = max - min + 1;
int D1R = 50;
int D1D = (int)(Math.random() * range) + min;
// If Jupier
}
if ((P1.equals("Jupiter"))) {
int min = 1;
int max = 50;
int range = max - min + 1;
int D1R = 100;
int D1D = (int)(Math.random() * range) + min;
//If Titan
}
if ((P1.equals("Titan"))) {
int min = 1;
int max = 70;
int range = max - min + 1;
int D1R = 50;
int D1D = (int)(Math.random() * range) + min;
//If Uranus
}
if ((P1.equals("Uranus"))) {
int min = 1;
int max = 40;
int range = max - min + 1;
int D1R = 60;
int D1D = (int)(Math.random() * range) + min;
//If Neptune
}
if ((P1.equals("Neptune"))) {
int min = 1;
int max = 25;
int range = max - min + 1;
int D1R = 150;
int D1D = (int)(Math.random() * range) + min;
}
//Here \|/
if (D1D = 1) {
int Mmin = 1;
int Mmax = 3;
int Mrange = Mmax - Mmin + 1;
int Message = (int)(Math.random() * Mrange) + Mmin;
if (Message == 1) {
System.out.println("You Died!");
System.out.println("Better Luck Next Time!");
}
else {
if (Message == 2) {
System.out.println("Failure!");
}
else {
if (Message == 3) {
System.out.println("You Died!");
System.out.println("Replay?");
}
}
}
}
}
}
【问题讨论】:
-
首先
if (D1D = 1)是不正确的检查,应该是if (D1D == 1)。其次,您在所有这些不同的 if 子句中定义整数(例如int D1D)。这意味着,已定义变量的范围仅限于 if 子句的范围。因此,一旦超出 if 子句,您就无法访问变量,因为它们超出了范围。解决方案是在开始时定义变量,在ifs 之外,稍后再初始化它们。 -
旁注:变量名应以小写开头并具有描述性。
-
但是,一旦定义了整数,我将如何编辑它们?
标签: java variables text integer