在开始讨论这个问题之前,我想先说一下,我到目前为止只学习Java大约一个月,所以有很多代码部分很可能充满了错误,而有些代码我已经脱离了StackOverflow。 如果格式和语法很糟糕,我想道歉,我知道我在那个部门犯了很多错误,并想向任何可以解决我的问题的人道歉。

基本上,我的问题归结为我的程序无法正常工作。 我应该先对主类文件进行编码,然后再从那里调用我的游戏函数,但是我却相反地完成了工作,最后在游戏文件上附加了一个主字符串参数。 首先,我将展示游戏:

 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package mathquiz;

import java.util.InputMismatchException;
import java.util.Random;
import java.util.Scanner;
import java.util.concurrent.ThreadLocalRandom;

/**
 *
 * @author macbook
 */
public class Game {
  
     static void shuffle(int[] shuf)
  {
    Random rnd = ThreadLocalRandom.current();
    for(int i = shuf.length - 2; i > 0; i --)
    {
      int index = rnd.nextInt(i + 1);
      int a = shuf[index];
      shuf[index] = shuf[i];
      shuf[i] = a;
    }
  }
  
  static void multi(int multi1, int multi2, int[] possible)
  {
    System.out.println("Which is the correct answer for " + multi1 + " * " + multi2 + "?");
    
    possible[0] = multi1 * multi2;
    
    for(int j = 1; j < 4; j++)
    {
      possible[j] = possible[0] + (int)(Math.random() * (50)) - 25;
    }
    
    possible[4] = possible[0];
    shuffle(possible);
    
    for(int j = 0; j < 4; j++)
    {
      System.out.println(possible[j]);
    }
  }
  
  static void div(int div1, int div2, int[] possible)
  {
    System.out.println("Which is the correct answer for " + div1 + " / " + div2 + "?");
    
    possible[0] = div1 / div2;
    
    for(int j = 1; j < 4; j++)
    {
      possible[j] = possible[0] + (int)(Math.random() * (50)) - 25;
    }
    
    possible[4] = possible[0];
    shuffle(possible);
    
    for(int j = 0; j < 4; j++)
    {
      System.out.println(possible[j]);
    }

}
  
}

代码的这一部分负责生成问题。 它按设计工作,生成6个随机乘法问题和6个除法问题。 但这是问题所在:

 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package mathquiz;

/**
 *
 * @author macbook
 */

import java.util.*;
import static mathquiz.Game.multi;
import static mathquiz.Game.div;
import static mathquiz.Menu.menu;

public class Main{
    
public static void main(String[] args) {
    
 Scanner input = new Scanner(System.in);
      int playerscore = 0;
      int multi1;
      int multi2;
      int answer;
      int div1 = 3;
      int div2 = 2;
      int[] possible = {0, 0, 0, 0, 0};
      int playeranswer;
          int userChoice;
        /*********************************************************/

        userChoice = menu();
         
    /********************************************************/
        
        for(int i = 0; i < 6; i++) {   
//checkermulti
      multi1 = (int)(Math.random() * (20)) + 1;
      multi2 = (int)(Math.random() * (20)) + 1;
         
      multi(multi1, multi2, possible);
    
      try {
          playeranswer = input.nextInt();
      }
      catch(InputMismatchException e) {
          System.out.println("Enter a valid number");
          return;
      }
      
      if(possible[4] == playeranswer)
         {
         System.out.println("Correct!");
         playerscore += 3;
         }
      else
         {
         System.out.println("Incorrect, the answer was " + possible[4]);
         playerscore -= 1;
         }

         System.out.println("You now have " + playerscore + " points!");    
         
//checkdiv
while(div1 % div2 != 0)
       {
       div1 = (int)(Math.random() * (100)) + 1;
       div2 = (int)(Math.random() * (100)) + 1;
       }  
         
       div(div1, div2, possible);
       
       div1 = 3;
       div2 = 2;
            
       playeranswer = input.nextInt();
       if(possible[4] == playeranswer)
         {
         System.out.println("Correct!");
         playerscore += 4;
         }
      else
         {
         System.out.println("Incorrect, the answer was " + possible[4]);
         playerscore -= 1;
         }

         System.out.println("You now have " + playerscore + " points!");
         
          }       
  }
}

这段代码在我的“主类”中,基本上这是我计划运行所有参数的地方。 但是,如您所见,它还包含变量的所有定义,这意味着最后的答案检查器无法与“主类”顶部的int定义一起使用。 基本上,我希望通过此类可以运行我的菜单功能(现已附加)


import java.util.*;
import static mathquiz.Game.shuffle;
import static mathquiz.Game.multi;
import static mathquiz.Game.div;

public class Menu {
    
    public static int menu() {
          Scanner scanner = new Scanner(System.in);
        int input = 0;

        do {
            System.out.println("Welcome");
            System.out.println("======================");
            System.out.println("(1) New Game");
            System.out.println("(2) Continue");
            System.out.println("(3) Scoreboard");
            System.out.println("(4) Quit");
            System.out.println("======================");
            System.out.print("Please enter a number:");

            input = scanner.nextInt();

            switch (input) {
                case 1:
                    System.out.println("New Game");
                    multi();  
                    break;
                case 2:
                
                    break;
                case 3:
                    System.out.println("Scoreboard");
                    
                    break;
                case 4:
                    System.out.println("Bye");
                    break;
                default:
                    break;
            }

        } while (input != 4);

        System.exit(1);
        return 0;
    }
    
    
}

...并从开始菜单输入/选项中调用我的游戏方法,但是我在如何实现该方法方面感到困惑。 因此,存在多个问题,为简洁起见,我将再次对其进行总结。

  1. 如何使游戏独立于主方法类运行?
  2. 如何获得菜单来运行游戏作为选项?
  3. 如何为游戏创建带有数据库.txt的高分板?

那应该是关于它的。 我想尽可能详细地回答我的问题,所以我真的希望有人可以为此提供帮助。 非常感谢您甚至不愿意查看和阅读我的问题的任何人。

谢谢赖斯

  ask by RicedChrispy translate from so

本文未有回复,本站智能推荐:

1回复

将数学公式保存到数据库中

已关闭 。 这个问题需要更加集中。 它当前不接受答案。 了解更多 。 想改善这个问题吗?
2回复

JavaCard的数学库?

我目前正在研究JavaCard项目(v.2.2.2),需要使用平方根,对数等来计算值... 我知道Math类在JavaCard API中不可用,并且想知道是否存在另一个提供此类操作的库吗? 而且我不能使用double值,但我需要。 有没有一种方法可以表示JavaCard API中的
1回复

编写数学方程式

因此,我尝试使用Java编写此方程: 我要从用户那里获取a,b和c。 这是我到目前为止的代码: 我认为我的问题是逻辑错误,因为程序可以正确编译并运行。 当我输入a,b和c的值时。 我得到r2 = NaN
1回复

Java的数学库

什么是Java最好的库来做数字的东西,比如计算积分,找到函数的根,计算不同的概率cdf等等?
1回复

如何根据游戏级别的用户点击次数更改数学测验难度? Android的

我正在创建一个简单的Android数学游戏,向用户展示4个游戏等级。 我试图弄清楚如何根据用户选择的水平来改变数学问题的长度。 我该怎么做? 这是一个if声明吗? 因此,例如,如果用户选择辛苦,它将显示5 * 10/3。 我已经在游戏类(游戏类)中实现了这一点: 这是困
3回复

如何用Java编写数学公式

我正在尝试找出一种将千克(由用户输入)转换为石头和磅的方法。 例如: 用户输入的重量为83.456公斤,乘以2.204622即可转换为磅= 184磅,再将184磅除以14即可转换为石材= 13.142石材。 用前两位数字(13)表示石头,然后将剩余的数乘以14即可得到磅,即0.
2回复

编写代码错误以获取正确的数学结果

尽管我的购买功能给出了不正确的数学结果,但我编写了一个“购买”和“出售”比特币的程序。 在我的程序中,我有20000美元(双美元)和比特币(价值4000美元)。 它要做的就是从您的美元中扣除购买的比特币数量。 每次我使用购买功能(输入1)一次至少购买2个时,它都会工作一次,然后
3回复

MKL加速Java数学库

我已经查看了StackOverflow和Googled上的相关主题并没有太多运气。 我也是Java的新手(我来自C#和.NET背景)所以请耐心等待。 在Java世界中有这么多可用的东西,它是非常压倒性的。 我正在开始一个新的Java-on-Linux项目,需要一些繁重且高度重复的数值计
3回复

基于Java的数学库可处理多种数学场景

我们计划做一些类似于AAAMath网站上可用的操作 。 我们想生成样本问题,该问题将加/ mult / div / sub(2个数字或3个数字或其中一个数字可能是一个常数..)。 想知道是否有任何库可以提供对上述基本数学运算的更高级别的抽象(例如,提供一种能够处理2个值,3个值或[输入的随机
5回复

与java一起使用的最佳数学库是什么? [关闭]

我想使用数学函数进行数据挖掘和分析。 我需要一个关于库的意见,我可以用它来实现这个目的。 你有什么建议?