2017-04-09 190 views
1

這是我的第一個問題,所以請耐心等待:-) 我嘗試編寫非常簡單的Java遊戲。首先,我想生成一個樣例任務,如「2 + 2 =」。比使用用戶必須回答結果是什麼。接下來我想生成一個char和其他隨機數。簡單的數學遊戲

2 2 =(4)如果答案==結果,不是生成隨機炭NAD數 4 - 1 =(3)如果答案==結果,不是生成隨機炭NAD數 3 + 5 = (9)

目前我被卡住的字符代。

import java.util.Random; 


public class Main { 
    public static void main(String[] args) { 
     Random randomNumber = new Random(); 
     int userRandomNumber = randomNumber.nextInt(10) - 1; 
     int myRandomNumber = randomNumber.nextInt(10) - 1; 
     int i = giveResult(userRandomNumber, myRandomNumber); 
     System.out.println(userRandomNumber); 
     System.out.println(myRandomNumber); 
     System.out.println(i); 

    } 

    public static int giveResult(int userRandomNumber, int myRandomNumber) { 

     Random randomNumber2 = new Random(); 
     int switchRandomNumber = randomNumber2.nextInt(2); 
     char operatorRandom = '+'; 
     int result = 0; 

     switch (switchRandomNumber) { 
      case 1: 
       operatorRandom = '+'; 
       result = userRandomNumber + myRandomNumber; 
       //return result; 
       break; 
      case 2: 
       operatorRandom = '-'; 
       result = userRandomNumber - myRandomNumber; 
       //return result; 
       break; 
      default: 
       result = 0; 

     } 
     return result; 
    } 
} 

如何更正我的代碼以及接下來的步驟?

問候!

+0

你們正在製作互動節目嗎?據我所知,你正在產生一個隨機問題,然後用戶必須輸入答案。它是否正確? – CodingNinja

+0

@SerSergious:Id寧願使用Math.random(),它更易於使用並返回1和0之間的數字 – user7185318

+0

@SerSergious爲什麼要生成一個char和另一個隨機數? – CodingNinja

回答

0

關於Random的第一件事是理解它是一個Class。所以我從你的命名規則看你可能會誤解一個班級。

考慮隨機就像一個製造東西的工廠,所以當你調用.next()時,它會爲你彈出一個數字。因此,它本身不是一個數字,它的一些製造商

接下來,你可以只是它聲明他們之外,並在啓動初始化它實際上使用您的兩個功能相同的隨機類。

所以,你可以做這樣的事情開始:

public class Main { 

    private Random rnd; 

    public static void main(String[] args) { 
     rnd = new Random(); 

的「=新的隨機()」代碼的一部分被稱爲初始化。當你首次聲明類「Private Random rnd」時這就像你有工廠,但它現在實際上是一個空的工廠,現在還沒有任何零件。

Initiliazing一類是像建設的工廠,獲取其所有部件,將其打開,基本上設置它開始做的東西

如果試圖在未初始化的Random類調用的.next() ,你會得到一個錯誤!

好吧,現在隨機工作,我們如何使用它?那麼讓我們來看看微軟關於Random的文檔:https://msdn.microsoft.com/en-us/library/system.random(v=vs.110).aspx

哦,很酷,你可以看到下面有幾個版本。

你可以做的.next(),或者你可以做的.next(號碼),你可以做。接下來(數字,數字)

他們甚至告訴你什麼不同的版本做。

接下來,您可以使用字符串插值(用於粘貼字符串變量的花式詞)來打印字符串。格式()

例子:

Var myString = string.Format("{0}{1}{2}={3}", "1", "+", "2", "3") 

這會給你字符串 「1 + 2 = 3」

你想知道的是將是下招。

您可以在大多數對象(包括整數)上調用.toString()。還應該注意的是,string.Format會在您自動傳入的所有內容中調用toString(),不需要首先使用.toString()!

所以你實際上可以用這段代碼實現上面的同樣結果。

Var myString = string.Format("{0}{1}{2}={3}", 1, '+', 2, 3) 

但是,如果你希望字符串你可以只需撥打:

var myString = myNumber.toString() 

讓我知道,如果你是這樣的!

0

你已經使這個程序比它真正需要更復雜。

實現你的目標是什麼,最簡單的方法(或者至少是我認爲你正在瞄準)是這樣的:

public static void main(String[] args) { 
     Random rand = new Random(); 
     int NumberOfAnswers = addOrSubtract.length; 
     int pick = rand.nextInt(NumberOfAnswers);  
     choice = addOrSubtract[pick]; 
     int randomNumber1 = rand.nextInt(10); 
     int randomNumber2 = rand.nextInt(10); 
     if (choice == "+") { 
      answer = randomNumber1 + randomNumber2; 
     } else { 
      answer = randomNumber1 - randomNumber2; 
     } 
     System.out.println(randomNumber1 + " " + choice + " " + randomNumber2 + " = "); 
     Scanner input = new Scanner(System.in); 
     int inputAnswer = input.nextInt(); 
     if (inputAnswer == answer) { 
      System.out.println("Correct! The answer was: " + answer); 
      main(null); 
     } else { 
      System.out.println("Incorrect. The answer was: " + answer); 
      System.out.println("Good-Bye!"); 
      System.exit(0); 
     } 
     input.close(); 
} 

注:我已經幾乎完全重新做你的程序,所以如果您對任何事情有任何疑問,請在下面評論。

+0

我已經完成了,所以程序在你正確的時候繼續運行一個新的問題,並且一直給出新的隨機問題,直到你弄錯了。當你遇到一個錯誤的時候,程序會說你錯了,告訴你答案,並終止它。 – CodingNinja