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

时间:2016-03-14 02:09:17

标签: java class

我在java编程方面仍然相当新,而且我已经把一些方面搞砸了,但Java中的类到目前为止给我带来的麻烦。我想要做的是做一个随机数字游戏,玩家必须选择1到10的数字,如果错了,那么再试一次并让程序记录他们猜到了多少次(但不是添加到先前已经选择一个数字时的猜测数或者选择的数字是否在指定范围之外)我已经计算出逻辑代码并且正在尝试专门为逻辑和类创建一个类特别适用于I / O接口。但我有一点时间。我将非常感谢任何输入或提示,我将提供下面已有的代码:

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

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

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

这是我想要处理所有I / O接口的类

<select 
    data-ng-model="carSelection"
    data-ng-options = "x.make for x in cars" data-ng-selected="$first">
</select>

1 个答案:

答案 0 :(得分:0)

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

  1. GuessLogic应该用作实例而不是静态类。因为您需要GuessLogic来保存操作和目标号码。
  2. while循环应以main编码。因为GuessLogic只负责逻辑
  3. 元素Set是唯一的,因此无需自行计算多少个不同的数字。
  4. GuessApp:

    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());
            }
            }
        }
    }
    

    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;
        }
    }