1

新手在这里尝试使用在线工具自学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 为什么 ios 这个以及如何修复它?如果这非常简单,再次抱歉。

4

5 回答 5

4

你快到了 - 要从任何 Y 类调用 X 类的方法,你只需要在 Y 类中创建 X 类的一个实例(正如你已经通过randnum在你的类中创建一个对象所做的那样NoIdea),然后你可以在其上调用方法如下:

int num = rn.randnum();
//do something with num

作为记录,将类名大写是公认的 Java 约定...

于 2013-05-17T01:01:20.197 回答
2

为了获得随机数,您必须通过调用 randnum 类中的 randnum 方法int i = rn.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();

于 2013-05-17T01:08:49.650 回答
2

做这个:

randnum rn = new randnum();
int i = rn.randnum();

另外,请阅读Java 编程语言的代码约定。

于 2013-05-17T01:00:28.007 回答
2

您可能不想使用对象 randnum,而只想访问方法“randnum()”。我会忘记对象(即使用“new”关键字)并将方法设为静态,这意味着它只有一个实例(如果您还不了解对象,请不要担心。基本上,静态意味着您不必使用“新”,但这也意味着您不能拥有它的两个不同副本(就像您想要两种不同的武器造成不同的伤害一样,因此您可以重用具有不同 Low 和 High 值的 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(),因为方法是动作。

于 2013-05-17T01:48:02.617 回答
1

我对你的代码做了一点改动。类名应使用大写驼峰式大写。随机数.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..");
        }
    }
}   
}
于 2013-05-17T01:11:40.883 回答