java - Setter 和 Getter 到不同的类

标签 java for-loop

我的问题是,我根本不知道使用什么代码来从 getX 方法获取我的值到其他类的主方法。

package hangman;

公开课刽子手{

private int triesLimit;
private String word;

public void setTriesLimit(int triesLimit) {
    this.triesLimit = triesLimit;
}

public void setWord(String word) {
    this.word = word;
}

public int getTriesLimit() {
    return this.triesLimit;
}

public String getWord() {
    return this.word;
}


@Override
public String toString() {
    return ("Enter Secret Word " + this.getWord()
            + ".\nEnter max # of tries (Must be under 7) "
            + this.getTriesLimit());
}

}

那是来自子类的,我试图将 attemptsLimit 的值存储到此类的 main 方法中 包刽子手;

public class PlayHangman {

public static void main(String[] args) {
    Hangman hangman = new Hangman();
    Scanner scn = new Scanner(System.in);
    int triesCount = 0;
    int correctCount = 0;
    hangman.toString();
    int triesLimit = hangman.getTriesLimit();
    String secretWord = hangman.getWord();
    StringBuilder b = new StringBuilder(secretWord.length());
    for (int i = 0; i < secretWord.length(); i++) {
        b.append("*");
    }
    char[] secrectStrCharArr = secretWord.toCharArray();
    int charCnt = secretWord.length();
    for (int x = 0; triesCount < triesLimit; triesCount++) {
        while (charCnt >= 0) {
            System.out.println("Secrect Word :" + b.toString());
            System.out.println("Guess a letter :");

            char guessChar = scn.next().toCharArray()[0];
            for (int i = 0; i < secrectStrCharArr.length; i++) {
                if (guessChar == secrectStrCharArr[i]) {
                    b.setCharAt(i, guessChar);
                    correctCount++;
                } else if (guessChar != secrectStrCharArr[i]) {
                    triesCount++;
                    System.out.println("Incorrect: " + triesCount);hangmanImage(triesCount,correctCount);
                }
            }
        }
    }
}

我尝试在这里查找,但找不到子/父类(super class)中使用的 setter 和 getter

最佳答案

您需要在主方法中创建该类的实例来访问该类中可用的变量和方法,如下所示

public class PlayHangman {

        public static void main(String[] args) {
       Hangman hangman = new Hangman();
       hangman.setTriesLimit(2)
        int value = hangman.getTriesLimit();

     }

您可以查看 static 关键字来直接访问该值,但这需要对 OOP 和 JAVA 有更多的了解。 这应该可以正常工作。

希望有帮助:)

已编辑

ToString 方法只是将模型类中的所有内容转换为 String,您已正确完成此操作,但您实现不正确......更改您的 ToString 内容

@Override
public String toString() {
    return ("The Secret Word you entered: " + this.getWord()
            + ".\n The max # of tries (Must be under 7): "
            + this.getTriesLimit());
}

您已经初始化了 Scanner,它可以执行您想要的操作,要求用户输入值,但您还没有实现它,因此将其添加到您的主方法中

    Scanner scn = new Scanner(System.in);
         hangman.setTriesLimit(scn.nextInt());
        hangman.setWord(scn.next());
       hangman.toString()//Will work now

尝试和错误现在是你最好的 friend :) 和谷歌一些问题,而不是等待答案:)

关于java - Setter 和 Getter 到不同的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50691326/

相关文章:

java - Android NDK 在使用 ART 调用静态方法的 CallObjectMethod 中崩溃

java - 将 Spock 测试框架集成到 Eclipse Neon2 v4.6.2

javascript - 如何轻松获取 Javascript for 循环的当前迭代属性?

javascript - 为什么这个对象循环不起作用?

java - 这是递归吗?它会起作用吗?

java - 如何从终端运行 Apache Hama 的 Java 源代码

java - 关于如何打印 "ALL"最长字符串的问题,该字符串具有存储在数组(JAVA)中的最长长度()

java - 仅使用 For 循环的两个整数的幂之和

javascript - 如何使用for循环在看不见的数组中找到最大数?

java - Cassandra = 内存/编码- key 占用空间(哈希/字节[]=>十六进制=>UTF16=>字节[])