Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/370.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 创建对象以记录用户分数_Java - Fatal编程技术网

Java 创建对象以记录用户分数

Java 创建对象以记录用户分数,java,Java,我正在创建一个测验类型的控制台应用程序,根据答案的正确与否记录用户的分数。我想知道(因为有多个类别),创建一个score类而不是将它单独放在方法中是不是更好。如果是这样的话,实施这一点的最佳方式是什么。外部资源也非常受欢迎 当前代码如下所示 import java.util.Scanner; public class DummyQuiz { static Scanner input = new Scanner(System.in); static int score = 0;

我正在创建一个测验类型的控制台应用程序,根据答案的正确与否记录用户的分数。我想知道(因为有多个类别),创建一个score类而不是将它单独放在方法中是不是更好。如果是这样的话,实施这一点的最佳方式是什么。外部资源也非常受欢迎

当前代码如下所示

import java.util.Scanner;

public class DummyQuiz {
    static Scanner input = new Scanner(System.in);
    static int score = 0;

    public static void category1()
    {
        int answer1;
        System.out.println("Question 1");
        System.out.println("1) answer 1");
        System.out.println("2) answer 2");
        answer1 = input.nextInt();

        if(answer1 == 1)
        {
            System.out.println("Correct!\n");
            score++;
        }
        else
        {
            System.out.println("Incorrect\n");
        }                     
    }//category1

    public static void main(String []args){

        category1();
        // Output final score here

    }
}

我将在两种情况下将值封装在新类中:

  • 您有多个语义上属于一起的值。例如,对于名字和姓氏,您将创建一个person类
  • 你想为你的变量定义一种特殊的行为,比如某些数学运算。然后我将创建一个值类(不可变)。你可以这样做,例如,用一笔钱或一个日期

  • 在你的例子中,它只是一个递增的
    int
    ,所以你应该很好,尤其是对于这样一个小项目。但是无论如何,创建一个类也不会错。

    考虑这样做:

    public static int category1()
    {
        int answer1;
        System.out.println("Question 1");
        System.out.println("1) answer 1");
        System.out.println("2) answer 2");
        answer1 = input.nextInt();
    
        if(answer1 == 1)
        {
            System.out.println("Correct!\n");
            return 1;
        }
        else
        {
            System.out.println("Incorrect\n");
            return 0;
        }                     
    }//category1
    
    public static void main(String []args){
        score += category1();
    }
    
    你现在这样做应该没有问题。您应该将score设置为私有变量,以便其他类不能修改它。创建一个score对象对于一个基本类型来说是过分的


    如果你想对类/对象进行一些练习,请考虑创建一个类别对象,该对象包含可以从主类调用的问题对象。

    < P>我会敦促你先把问题清理成对象。请注意,问题应负责确定答案是否正确。你创建一个问题集合(或数组),打印它们(调用toString),通过调用isAnswerCorrect测试正确性,我想你会发现评分很容易(通过测试你的问题集合/数组大小,你知道一开始会问多少个问题):


    我会用几种不同的方法,不知道你有多新,但你可能想用一种你觉得最舒服的

    首先,可以在同一个类中使用HashMap

    HashMap<Integer, Boolean> responses = new HashMap<Integer, Boolean>(); //<K (Question #),V (Correct response)>
    
    HashMap responses=newhashmap()//
    
    要添加到此hashmap,只需使用

    response.put(<question number>, <correct response?>);
    
    response.put(,);
    
    例如,如果您想将其打印到控制台

    for (int i = 0; i < responses.keySet().size(); i++){
       System.out.println(responses.keySet().get(i)+" "+responses.values().get(i));
    }    
    
    for(int i=0;i
    如果您想用另一种方法来创建一个类

    public class answers{
    public List<Boolean> repsonse = new ArrayList<Boolean>();
    
    
       public void put(int num, boolean response){
    numbers.set(num,response);
    }
    public boolean getRepsonse(int num){
    return numbers.get(num)
    }
    }
    
    公共课堂答案{
    public List repsonse=new ArrayList();
    公共void put(int num,布尔响应){
    设置(num,response);
    }
    公共布尔getRepsonse(int-num){
    返回数字。获取(num)
    }
    }
    
    但这种方法确实是多余的


    希望这会有所帮助

    请注意,我是java新手,这只是一个虚拟源代码。如果您存储的只是一个计算正确问题数量的int,那么编写一个类可能会有点太多。如果您有多个类别,最好让类别方法根据正确/不正确返回1/0,然后在主方法中增加分数。
    public class answers{
    public List<Boolean> repsonse = new ArrayList<Boolean>();
    
    
       public void put(int num, boolean response){
    numbers.set(num,response);
    }
    public boolean getRepsonse(int num){
    return numbers.get(num)
    }
    }