所以我正在创建一个随机代码,它不一定与这个级别的任何内容相关,但我更多的是测试一些想法。因此,由于某种原因,我的代码将随机工作,但在大多数情况下,它会抛出一个随机负数,通常在 -413796084 附近。我不知道为什么要这样做,我试图将数字保持在 0 - 50 附近。我以为我做得对,但显然我没有。另外,我对 Java 还比较陌生,如果这有助于解释我犯的任何错误。
import java.util.Scanner;
import java.util.Random;
class damagecalc {
public static void main(String args[]){
Scanner input = new Scanner(System.in);
Random randamage = new Random();
int totaldmg;
System.out.println("Will you (a) attack, (s) defend, (d) skip your turn, (f) magic, (i) use an item?");
String dmgString = input.next();
char dmgChar = dmgString.charAt(0);
if(dmgChar == 'a'){
for(int finaldmg=50;finaldmg<=50;finaldmg++){
totaldmg = randamage.nextInt(10);
}
totaldmg = randamage.nextInt();
if(totaldmg >= 50){
System.out.println("You have defeated the monster!");
}else{
System.out.println("Damage Dealt:" + totaldmg);
}
}
}
}
编辑---------------------------------------------- --
所以我更改了代码并修复了一些问题,现在每次都只是吐出 0。也许现在会更容易弄清楚一些。但我确实需要帮助。
这是新代码:
import java.util.Scanner;
import java.util.Random;
class damagecalc {
public static void main(String args[]){
Scanner input = new Scanner(System.in);
Random randamage = new Random();
int totaldmg;
System.out.println("Will you (a) attack, (s) defend, (d) skip your turn, (f) magic, (i) use an item?");
String dmgString = input.next();
char dmgChar = dmgString.charAt(0);
if(dmgChar == 'a'){
for(int finaldmg=1;finaldmg<=50;finaldmg++){
}
totaldmg = randamage.nextInt(1);
if(totaldmg >= 50){
System.out.println("You have defeated the monster!");
}else{
System.out.println("Damage Dealt:" + totaldmg);
}
}
}
}
最佳答案
totaldmg = randamage.nextInt();
Random.nextInt() 可以返回 int 的任何合法值,包括大量的负值,这不太可能是您想要的结果。给 nextInt
一些整数作为参数,将其限制在所需的范围内。
另外,我会看一下这个循环,因为它很可能不会做你认为它会做的事情。
for(int finaldmg=50;finaldmg<=50;finaldmg++){
totaldmg = randamage.nextInt(10);
}
循环体仅执行一次,并且 totaldmg
无论如何都会在循环之后被覆盖。
编辑:如果您只想生成 0 到 50 之间的数字,则可以替换此:
for(int finaldmg=50;finaldmg<=50;finaldmg++){
totaldmg = randamage.nextInt(10);
}
totaldmg = randamage.nextInt();
这样:
totaldmg = randamage.nextInt(51);
如果您想知道 51
,这是排除的上限 - 这意味着您将获得至少为零、最多 50 的伤害量。
关于java - 随机数生成器正在生成巨大的负数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19718246/