我一直得到一个错误,说”D1D”未被定义?

huangapple go评论114阅读模式
英文:

I keep getting an error, saying that D1D has not been defined?

问题

  1. import java.lang.Math;
  2. import java.util.Scanner;
  3. public class PlanetExplorer {
  4. public static void main(String[] args) {
  5. System.out.println("Explorable Planets:");
  6. System.out.println(" ");
  7. System.out.println("Mars:");
  8. System.out.println("Resources: 50 ");
  9. System.out.println("Danger: 10%");
  10. System.out.println(" ");
  11. System.out.println("Jupiter:");
  12. System.out.println("Resources: 75 ");
  13. System.out.println("Danger: 50%");
  14. System.out.println(" ");
  15. System.out.println("Titan:");
  16. System.out.println("Resources: 50 ");
  17. System.out.println("Danger: 30%");
  18. System.out.println(" ");
  19. System.out.println("Uranus:");
  20. System.out.println("Resources: 100 ");
  21. System.out.println("Danger: 60%");
  22. System.out.println(" ");
  23. System.out.println("Neptune:");
  24. System.out.println("Resources: 150 ");
  25. System.out.println("Danger: 75%");
  26. Scanner Planet1 = new Scanner(System.in);
  27. String P1 = Planet1.next();
  28. if ((P1.equals("Mars"))) {
  29. int min = 1;
  30. int max = 90;
  31. int range = max - min + 1;
  32. int D1R = 50;
  33. int D1D = (int)(Math.random() * range) + min;
  34. }
  35. if ((P1.equals("Jupiter"))) {
  36. int min = 1;
  37. int max = 50;
  38. int range = max - min + 1;
  39. int D1R = 100;
  40. int D1D = (int)(Math.random() * range) + min;
  41. }
  42. if ((P1.equals("Titan"))) {
  43. int min = 1;
  44. int max = 70;
  45. int range = max - min + 1;
  46. int D1R = 50;
  47. int D1D = (int)(Math.random() * range) + min;
  48. }
  49. if ((P1.equals("Uranus"))) {
  50. int min = 1;
  51. int max = 40;
  52. int range = max - min + 1;
  53. int D1R = 60;
  54. int D1D = (int)(Math.random() * range) + min;
  55. }
  56. if ((P1.equals("Neptune"))) {
  57. int min = 1;
  58. int max = 25;
  59. int range = max - min + 1;
  60. int D1R = 150;
  61. int D1D = (int)(Math.random() * range) + min;
  62. }
  63. if (D1D == 1) {
  64. int Mmin = 1;
  65. int Mmax = 3;
  66. int Mrange = Mmax - Mmin + 1;
  67. int Message = (int)(Math.random() * Mrange) + Mmin;
  68. if (Message == 1) {
  69. System.out.println("You Died!");
  70. System.out.println("Better Luck Next Time!");
  71. }
  72. else {
  73. if (Message == 2) {
  74. System.out.println("Failure!");
  75. }
  76. else {
  77. if (Message == 3) {
  78. System.out.println("You Died!");
  79. System.out.println("Replay?");
  80. }
  81. }
  82. }
  83. }
  84. }
  85. }
英文:

I am making a planet exploration text game, where you choose from 5 different planets, each one harder than the one above it, but also more resourceful. I have the Int Variable: "D1D", as the danger value, that is randomised. I have a death screen thing, that activates if D1D = 1, but it keeps saying, that it cant find D1D?
(I am using JDoodle)

  1. import java.lang.Math;
  2. import java.util.Scanner;
  3. public class PlanetExplorer {
  4. public static void main(String[] args) {
  5. //Planets:
  6. System.out.println("Explorable Planets: ");
  7. System.out.println(" ");
  8. System.out.println("Mars: ");
  9. System.out.println("Resorces: 50 ");
  10. System.out.println("Danger: 10%");
  11. System.out.println(" ");
  12. System.out.println("Jupiter: ");
  13. System.out.println("Resorces: 75 ");
  14. System.out.println("Danger: 50%");
  15. System.out.println(" ");
  16. System.out.println("Titan: ");
  17. System.out.println("Resorces: 50 ");
  18. System.out.println("Danger: 30%");
  19. System.out.println(" ");
  20. System.out.println("Uranus: ");
  21. System.out.println("Resorces: 100 ");
  22. System.out.println("Danger: 60%");
  23. System.out.println(" ");
  24. System.out.println("Neptune: ");
  25. System.out.println("Resorces: 150 ");
  26. System.out.println("Danger: 75%");
  27. //Detecting the planet
  28. Scanner Planet1 = new Scanner(System.in);
  29. String P1 = Planet1.next();
  30. // D_R = Day (1-5) Resources
  31. // D_D = Day (1-5) Danger
  32. //If Mars:
  33. if ((P1.equals("Mars"))) {
  34. int min = 1;
  35. int max = 90;
  36. int range = max - min + 1;
  37. int D1R = 50;
  38. int D1D = (int)(Math.random() * range) + min;
  39. // If Jupier
  40. }
  41. if ((P1.equals("Jupiter"))) {
  42. int min = 1;
  43. int max = 50;
  44. int range = max - min + 1;
  45. int D1R = 100;
  46. int D1D = (int)(Math.random() * range) + min;
  47. //If Titan
  48. }
  49. if ((P1.equals("Titan"))) {
  50. int min = 1;
  51. int max = 70;
  52. int range = max - min + 1;
  53. int D1R = 50;
  54. int D1D = (int)(Math.random() * range) + min;
  55. //If Uranus
  56. }
  57. if ((P1.equals("Uranus"))) {
  58. int min = 1;
  59. int max = 40;
  60. int range = max - min + 1;
  61. int D1R = 60;
  62. int D1D = (int)(Math.random() * range) + min;
  63. //If Neptune
  64. }
  65. if ((P1.equals("Neptune"))) {
  66. int min = 1;
  67. int max = 25;
  68. int range = max - min + 1;
  69. int D1R = 150;
  70. int D1D = (int)(Math.random() * range) + min;
  71. }
  72. //Here \|/
  73. if (D1D = 1) {
  74. int Mmin = 1;
  75. int Mmax = 3;
  76. int Mrange = Mmax - Mmin + 1;
  77. int Message = (int)(Math.random() * Mrange) + Mmin;
  78. if (Message == 1) {
  79. System.out.println("You Died!");
  80. System.out.println("Better Luck Next Time!");
  81. }
  82. else {
  83. if (Message == 2) {
  84. System.out.println("Failure!");
  85. }
  86. else {
  87. if (Message == 3) {
  88. System.out.println("You Died!");
  89. System.out.println("Replay?");
  90. }
  91. }
  92. }
  93. }
  94. }
  95. }

答案1

得分: 1

你正在局部声明变量(在每个 if 代码块内部声明)。
在 if 代码块之后,变量会再次消失。

你应该在之前声明这些变量:

  1. public static void main(String[] args) {
  2. int min, max, range, Message, D1R, D1D;

并且只在 if 代码块中为它们赋值:

  1. if ((P1.equals("Neptune"))) {
  2. min = 1;
  3. max = 25;
  4. range = max - min + 1;
  5. D1R = 150;
  6. D1D = (int)(Math.random() * range) + min;

由于变量名不一致,编译时可能会出现更多问题,但我希望这能帮助你。

英文:

you are declaring your variables locally (new within each if-block).
After the if-block the variable is gone again.

you should declare the variables before:

  1. public static void main(String[] args) {
  2. int min, max, range, Message, D1R, D1D;

and the only assign values to them in the if-blocks:

  1. if ((P1.equals("Neptune"))) {
  2. min = 1;
  3. max = 25;
  4. range = max - min + 1;
  5. D1R = 150;
  6. D1D = (int)(Math.random() * range) + min;

you will have some more problems compiling this since the variable names are not consistent, but I hope this will help you.

huangapple
  • 本文由 发表于 2020年10月15日 21:02:37
  • 转载请务必保留本文链接:https://go.coder-hub.com/64372177.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定