当前位置: 首页 > 知识库问答 >
问题:

设置我的 Hangman 方法并在我的主方法中调用它们

李联
2023-03-14

很难将Game类中的方法调用到绞刑游戏的主方法。我们应该旋转一个轮子以获得100250或500美元的头奖金额,然后按照你的预期玩游戏……但方法是必要的。我还没有完成,我只是想在这一点上调用我的方法,看看它是如何工作的。这是我的代码:

import java.util.Scanner;
import java.util.Random;

public class GameDemo {
    public static void main(String[] args) {
        String[] songs = {"asdnj", "satisfaction", "mr jones",
        "uptown funk"}; //note this is a very short list as an example 
        Random rand = new Random();
        int i = rand.nextInt(songs.length);
        String secretword = songs[i];
        System.out.print("Welcome to The Guessing Game. The topic is song      titles. \nYou have 6 guesses. Your puzzle has the following letters: ");
        System.out.print("After spinning the wheel, you got " + spinWheel());

        //continue the code here.
    }
}

class Game {
    Random rand = new Random();
    String[] songs = {"asdnj", "satisfaction", "mr jones",
    "uptown funk"};
    int i = rand.nextInt(songs.length);
    private String secretword = songs[i];
    private char [] charSongs = secretword.toCharArray();
    private char [] guessed = new char [charSongs.length];
    private int guesses;
    private int misses; 
    private char letter;
    private char [] jackpotAmount = {100,250,500};

    public Game (){}

    public int spinWheel(int[] jackpotAmount){
      int rand = new Random().nextInt(jackpotAmount.length);
      return jackpotAmount[rand];
    }

    public char guessLetter(char charSongs [], char letter){
        int timesFound = 0;
        for (int i = 0; i < charSongs.length; i++){
           if (charSongs[i] == letter){
             timesFound++;
             guessed[i] = letter;
           }
        }
        return letter;
    }
}

返回错误是

游戏演示。java:11:error:找不到符号System.out。打印(“旋转轮子后,你得到了”spinWheel())^

共有2个答案

容宏逸
2023-03-14

spinWheel方法调用中存在几个问题:

  1. 您还没有实例化任何Game对象来调用此方法。要么你必须使它<code>静态</code>,要么你只需要实例化一个<code>游戏</code>并从这个objet调用它。我个人更喜欢第二个(非静态)选项,因为,特别是因为静态方法不能直接访问非静态方法或变量(……您需要一个实例或使它们<code>static</code>)

主要来说,您可以这样做(非静态解决方案):

Game game = new Game();
System.out.print("After spinning the wheel, you got " + game.spinWheel());

spinWheel变为:

//you can have "public static int spinWheel(){" 
//if you chose the static solution
//Note that jackpotAmount should also be static in that case
public int spinWheel(){
    int rand = new Random().nextInt(jackpotAmount.length);
    return jackpotAmount[rand];
}

请注意,<code>jackpotAmount</code>最好是<code>int[]</code>,而不是<code>char[]

令狐辉
2023-03-14

要从另一个类调用方法,您需要使该方法公开。完成此操作后,如果多次调用相同的方法,并且希望它每次都执行相同的函数(参数仍然可以不同),请使它们成为静态

要调用该方法,请执行以下操作(这是大多数类和方法的通用形式,您应该能够使用它来调用所有方法):

yourClassWithMethod.methodName();
 类似资料:
  • 问题内容: 每当我尝试调用repaint()方法时,都会说不能从静态方法引用非静态方法。顺便说一句,它与paintComponent方法在同一类中。我尝试首先在类之外创建一个对象,然后使用对象名称引用它,但是它也没有用。请帮忙。 问题答案: 主要方法是静态的。您的p对象不是:它是P类的实例字段。试试这个: 您应该始终从事件分发线程访问Swing组件,这就是为什么我将它们全部放在EventQueue

  • 并且显示错误 正如您所看到的,当我单击Button时,我想从CurrentWeatherFragment调用一个方法,从ForecastWeatherFragment调用一个方法。

  • 问题指出: 创建一个具有长度和宽度双属性的矩形类。默认构造函数应该将这些属性设置为1。提供计算矩形周长和面积的方法,以及两个数据字段的访问器和赋值器。length和width的mutator方法应该验证传入的数字是否大于0.0且小于20.0——如果不符合这些标准,就不应该更改字段的值。 在同一文件中编写一个驱动程序类来测试您的矩形类。它应该提示用户输入矩形的长度和宽度,然后打印出矩形的面积和周长。

  • 下面是一个示例项目:http://cl.ly/3N2u2i1S441M 我在一个UITableViewCell超类中,因为当子类被初始化时,我调用super。init()。在子类和超类的init的底部,我调用了一个方法,调用styleCell,对其应用样式。该方法来自于它们都符合的协议,其中一个隐式符合,因为它是子类,并且覆盖了该方法。 在超类'的末尾,调用该样式方法,但它调用子类'方法,而不是它

  • 我在将E3 RCP应用程序迁移到E4时遇到了问题。我有三个部分。2.样品含量为Lars Vogel(http://www.vogella.com/tutorials/EclipseRCP/article.html#plugin_creatinge4“使用SWT电源小部件”)进行测试,并将其与我的部件进行比较。 长话短说(er):应该创建视图内容的方法(标记为@PostConstruct)不会被调用