这里的新手试图通过在线工具学习自己的java。现在我明显做错了,因为我无法弄清楚如何获得一个单独的类文件来返回一个随机的int。随机代码很好,它只是我不知道如何让它正确返回!可能看起来像java 101很多你但我迷失了。洛尔
我希望它们在单独的类文件中作为如何不将所有内容放在一个文件中的例外。如果我把它放在一个类中,这个工作没问题,但这不是我想在这里练习的。谢谢你的帮助!
班级档案1:
package whatsthis;
import java.util.Random;
import java.util.Scanner;
public class Noidea{
private static Scanner user_input;
public static void main(String[] args)
{
System.out.println("Git is awesome");
Scanner user_input = new Scanner(System.in);
randnum rn = new randnum();
System.out.println("RANDOM NUM: " +rn);
System.out.println("What is your name?");
String first_name;
first_name = user_input.next();
System.out.println("Hello, "+first_name);
int health = 100;
while( health>0 )
{
//System.out.println(rndNum);
//System.out.println(rndNum);
System.out.println(health);
System.out.println("Attack? Y/N");
String attack;
attack = user_input.next();
if (attack.equals("Y")){
System.out.println("KILL!");
System.out.println("You've done " + rn + " damage!");
//health = health - rn;
System.out.println(health);
} else {
System.out.println("cower..");
}
}
}
}
班级文件2:
package whatsthis;
import java.util.Random;
public class randnum
{
public int randnum()
{
int Low = 10; //Used for lowened number in random
int High = 15; //Used for highend number in random
Random rndGen = new Random(); //Declare a new 'random' object
int rn = rndGen.nextInt(High-Low) + Low; //Proper random between two numbers (high and low)
return rn;
}
}
而不是我正在寻找的号码,它返回 whatsthis.randnum@2d09b23b 为什么选择这个以及如何修复它?如果这很简单,请再次抱歉。
答案 0 :(得分:4)
你差不多 - 要从任何Y类调用类X的方法,你只需要在Y类中创建一个X类实例(正如你已经通过创建一个randnum
对象所做的那样在你的NoIdea
类中),然后你可以按如下方式调用方法:
int num = rn.randnum();
//do something with num
对于记录,它作为一个公认的Java约定来大写类的名称......
答案 1 :(得分:2)
这样做:
randnum rn = new randnum();
int i = rn.randnum();
答案 2 :(得分:2)
要获取随机数,您必须通过int i = rn.randnum();
在randnum类中调用randnum方法。
如果你想在任何时候可以从头开始创建一个随机数,你可以创建一个可以在类之外调用的int值。
public class randnum
{
public int number;
public randnum() {
int Low = 10;
int High = 15;
Random rndGen = new Random();
//initialize the number!
number = rndGen.nextInt(High-Low) + Low;
}
public int getNumber() {
return number;
}
}
一旦对象初始化(public randnum() {...
),就会调用构造函数(new randnum();
)。因此,randnum number = new randnum();
会创建一个包含随机数的新对象,可以通过说出number.number;
或number.getNumber();
来访问该对象。
如果您不想为此创建额外的对象,只是因为创建额外的对象以获取随机数太迂回,只需将该方法设为静态:
public static int randnum() {
int Low = 10;
int High = 15;
Random rndGen = new Random();
int number = rndGen.nextInt(High-Low) + Low;
return number;
}
static
关键字使方法在任何地方都可用,甚至无需创建额外的对象。所以这一次,你可以只说int number = randnum.randnum();
。
答案 3 :(得分:2)
您可能不想使用对象randnum,而只是想要访问方法“randnum()”。我会忘记对象(即使用“new”关键字)并使方法成为静态,这意味着它只有一个实例(如果你还不知道对象,不要担心这个。基本上,静态意味着你不必使用“新”,但它也意味着你不能有两个不同的副本(就像你想要两种不同的武器做不同的伤害,所以你可以重复使用不同的低和高值的randnum() ,这些值将限制在两个副本中。))
`public static int randnum()
{
int Low = 10; //Used for lowened number in random
int High = 15; //Used for highend number in random
Random rndGen = new Random(); //Declare a new 'random' object
int rn = rndGen.nextInt(High-Low) + Low; //Proper random between two numbers (high and low)
return rn;
}`
这样你可以像int rn = randnum.randnum()
一样。这使得事情变得不那么复杂了,因为另外,你通常不会在类中调用与类同名的方法,除非它是构造函数,这对于对象来说是特殊的。还有一件事,大多数方法用动词命名,比如getRandNum(),因为方法就是动作。
答案 4 :(得分:1)
我对你的代码做了一些改变。类名应使用upper camel case大写。 Randnum.java
package whatsthis;
import java.util.Random;
public class Randnum
{
public int randnum()
{
int Low = 10; //Used for lowened number in random
int High = 15; //Used for highend number in random
Random rndGen = new Random(); //Declare a new 'random' object
int rn = rndGen.nextInt(High-Low) + Low; //Proper random between two numbers (high and low)
return rn;
}
}
Noidea.java
package whatsthis;
import java.util.Scanner;
public class Noidea{
private static Scanner user_input;
public static void main(String[] args)
{
System.out.println("Git is awesome");
Scanner user_input = new Scanner(System.in);
int rn = new Randnum().randnum();
System.out.println("RANDOM NUM: " +rn);
System.out.println("What is your name?");
String first_name;
first_name = user_input.next();
System.out.println("Hello, "+first_name);
int health = 100;
while( health>0 )
{
//System.out.println(rndNum);
//System.out.println(rndNum);
System.out.println(health);
System.out.println("Attack? Y/N");
String attack;
attack = user_input.next();
if (attack.equals("Y")){
System.out.println("KILL!");
System.out.println("You've done " + rn + " damage!");
health = health - rn;
System.out.println(health);
} else {
System.out.println("cower..");
}
}
}
}