Java类和在其他类中调用变量

Java类和在其他类中调用变量,java,class,Java,Class,我对java编程还是相当陌生的,我已经了解了一些方面,但是java中的类给我带来了最大的麻烦。我试图做的是做一个随机数字游戏,玩家必须选择一个数字1到10,如果它是错误的,然后再试一次,让程序记录他们猜了多少次(但如果之前已经选择了一个数字,或者如果选择的数字超出了指定范围,则不增加猜数)我已经编写了逻辑代码,并试图创建一个专门用于逻辑的类和一个专门用于I/O接口的类。但我过得很开心。任何输入或提示都将非常感谢,我将提供我已经拥有的以下代码: 这是我希望它处理所有逻辑的逻辑类 package g

我对java编程还是相当陌生的,我已经了解了一些方面,但是java中的类给我带来了最大的麻烦。我试图做的是做一个随机数字游戏,玩家必须选择一个数字1到10,如果它是错误的,然后再试一次,让程序记录他们猜了多少次(但如果之前已经选择了一个数字,或者如果选择的数字超出了指定范围,则不增加猜数)我已经编写了逻辑代码,并试图创建一个专门用于逻辑的类和一个专门用于I/O接口的类。但我过得很开心。任何输入或提示都将非常感谢,我将提供我已经拥有的以下代码:

这是我希望它处理所有逻辑的逻辑类

package guessapp;

import java.util.HashSet;
import java.util.Scanner; 

public class GuessLogic {
    public static int Logic() {
        HashSet<Integer> hs = new HashSet<>();
        int GuessLogic = (int) (Math.random() * 10 + 1); 
        Scanner keyboard = new Scanner(System.in);
        int A;
        int guess;
        int NumGuess = 1;
        do {
            guess = keyboard.nextInt();
            if (hs.contains(guess)) {
                A = 1;
                return A;
            }
            if (guess < 0 || guess > 10) {
                A = 2;
                return A;
            }
            if (guess == GuessLogic) {
                A = 3;
                return A; // this will stop the loop
            } else if (guess < GuessLogic) {
                NumGuess++;
                A = 4;
                return A; 
            } else if (guess > GuessLogic) {
                NumGuess++;
                A = 5;
                return A;
            }
            hs.add(guess);
        } while (true);
    }

    public static int getGuess() {
        int guess;
        Scanner keyboard = new Scanner(System.in);
        guess = keyboard.nextInt();
        return guess;
    }
}

以下是修改后的代码。这里有一些一般的想法:

  • GuessLogic
    应该用作实例,而不是静态类。因为您需要
    GuessLogic
    来保存操作和目标编号
  • while循环应在
    main
    中编码。因为
    GuessLogic
    只负责逻辑
  • 元素是
    集合
    是唯一的,因此无需自己计算有多少个不同的数字
  • 猜测应用程序:

    public class GuessApp {
        public static void main(String[] args) {
            int r, w, y;
            GuessLogic guessLogic = new GuessLogic();
            while(true){
                System.out.print("Enter a guess: ");
                w = guessLogic.getGuess();
                r = guessLogic.Logic(); 
    
                if (r == 1) {
                    System.out.println("You have already entered this number");
                    continue;
                }
    
                if (r == 2) {
                    System.out.println("Your guess is out of the specified range. Please try again.");
                    continue;
                }
                System.out.println("Your guess is " + w);
                if (r == 3) {
                    System.out.println("You got it right!! Congrats!! Total Number of Guesses: " + guessLogic.getNumber());
                    break;
                } else if (r == 4) {
                    System.out.println("You are wrong!!! Hint: Guess Higher, Guess number: " + guessLogic.getNumber());
                } else if (r == 5) {
                    System.out.println("You are wrong!!! Hint: Guess Lower, Guess number: " + guessLogic.getNumber());
            }
            }
        }
    }
    
    猜测逻辑:

    public class GuessLogic {
        HashSet<Integer> hs = new HashSet<>();
        int number = (int) (Math.random() * 10 + 1);    
    
        public int getNumber(){
            return hs.size();
        }   
    
        public int Logic(int guess) {
            if (hs.contains(guess)) {
                return 1;
            }
            if (guess < 0 || guess > 10) {
                return 2;
            }
            if (guess == number) {
                return 3; // this will stop the loop
            } else if (guess < number) {
                // just add to the set. The set will guarantee that there is no repetitive item.
                hs.add(guess);
                return 4; 
            } else if (guess > number) {
                hs.add(guess);
                return 5;
            }
            return -1;
        }   
    
        public int getGuess() {
            int guess;
            Scanner keyboard = new Scanner(System.in);
            guess = keyboard.nextInt();
            return guess;
        }
    }
    
    公共类逻辑{
    HashSet hs=新的HashSet();
    整数=(int)(Math.random()*10+1);
    public int getNumber(){
    返回hs.size();
    }   
    公共整数逻辑(整数猜测){
    如果(hs.包含(猜测)){
    返回1;
    }
    如果(猜测<0 | |猜测>10){
    返回2;
    }
    如果(猜测==数字){
    return 3;//这将停止循环
    }else if(猜测<数字){
    //只需添加到集合中。集合将保证没有重复项。
    hs.添加(猜测);
    返回4;
    }否则如果(猜测>数字){
    hs.添加(猜测);
    返回5;
    }
    返回-1;
    }   
    公共int getGuess(){
    智力猜测;
    扫描仪键盘=新扫描仪(System.in);
    guess=keyboard.nextInt();
    返回猜测;
    }
    }
    
    您的代码没有编译,特别是
    返回A,NumGuess没有意义。如果你不喜欢,我建议你使用ad IDE。它会告诉你关于编译时错误的描述,你可以通过这些描述找到答案。。。你应该接受你以前帖子的答案。您有一个与类同名的
    int GuessLogic
    。当前不会编译此文件。请对变量和方法进行分类
    public class GuessLogic {
        HashSet<Integer> hs = new HashSet<>();
        int number = (int) (Math.random() * 10 + 1);    
    
        public int getNumber(){
            return hs.size();
        }   
    
        public int Logic(int guess) {
            if (hs.contains(guess)) {
                return 1;
            }
            if (guess < 0 || guess > 10) {
                return 2;
            }
            if (guess == number) {
                return 3; // this will stop the loop
            } else if (guess < number) {
                // just add to the set. The set will guarantee that there is no repetitive item.
                hs.add(guess);
                return 4; 
            } else if (guess > number) {
                hs.add(guess);
                return 5;
            }
            return -1;
        }   
    
        public int getGuess() {
            int guess;
            Scanner keyboard = new Scanner(System.in);
            guess = keyboard.nextInt();
            return guess;
        }
    }