2014-04-12 28 views
0

如果您需要任何解釋,請隨時詢問。 EquationsAndAnswers類的目標是生成8個數組,4個字符串類型和4個雙精度類型,並使用加法方程填充它們,然後爲每個基本數學運算符回答等等。然後,從這8個陣列中,應該從四個字符串類型方程陣列的任何一箇中隨機選擇一個方程。選擇隨機方程和相應的答案寫入後,它將它們寫入文件(方程式.txt)。 我的問題是,我稱之爲從Menu類的writeBoth方法後,equations.txt文件看起來像這樣:寫入文件時,它會寫入相同的整數而不是不同的整數

6 + 10 

6 + 10 

8 - 9 

8 - 9 

6 + 10 

8 - 9 

6 + 10 

,而不是像這樣:

1+2 

3-2 

4*5 

10÷2 

我的類菜單:

public class Menu { 

    public static boolean additionBool = true; 
    public static boolean subtractionBool = true; 
    public static boolean multiplicationBool = true; 
    public static boolean divisionBool = true; 
    public static boolean doubleDigitBool = false; 

    new EquationsAndAnswers().writeBoth(); 
} 

我班EquationsAndAnswers:

import java.util.Random; 
import java.io.BufferedWriter; 
import java.io.File; 
import java.io.FileWriter; 
import java.io.IOException; 

import javax.swing.JOptionPane; 

public class EquationsAndAnswers { 
/*Random Generators*/ 
    Random singleDigitNaturalGen = new Random(); 
    Random randomEquationPicker = new Random(); 
    Random doubleDigitNaturalGen = new Random(); 
public void writeBoth(){  



    /*Declaration of Four Basic Mathematic Operation Equation Arrays and Corresponding Answers*/ 
    String additionArrayEquation[] = new String[100]; 
    int additionArrayAnswers[] = new int[100]; 

    String subtractionArrayEquation[] = new String[100]; 
    int subtractionArrayAnswers[] = new int[100]; 

    String multiplicationArrayEquation[] = new String[100]; 
    int multiplicationArrayAnswers[] = new int[100]; 

    String divisionArrayEquation[] = new String[100]; 
    double divisionArrayAnswers[] = new double[100]; 

    String assortedEquations[] = new String[100]; 
    double assortedAnswers[] = new double[100]; 

    /*Population of Basic Operation Equation Arrays*/ 
    /*Population of Addition Equation and Answer Arrays*/ 
    for(int additionArrayGenerationX = 0; additionArrayGenerationX < additionArrayEquation.length; additionArrayGenerationX++){ 

     int tempAdditionY = singleDigitNaturalGen.nextInt(11), tempAdditionX = singleDigitNaturalGen.nextInt(11); 
     int answer = tempAdditionY + tempAdditionX; 
     String equation = (tempAdditionY + " + " + tempAdditionX); 
     additionArrayEquation[additionArrayGenerationX] = equation; 
     additionArrayAnswers[additionArrayGenerationX] = answer; 
    } 



    /*Population of Subtraction Equation and Answer Arrays*/ 
    for(int subtractionArrayGenerationX = 0; subtractionArrayGenerationX < subtractionArrayEquation.length; subtractionArrayGenerationX++){ 

     int tempSubtractionY = singleDigitNaturalGen.nextInt(11), tempSubtractionX = singleDigitNaturalGen.nextInt(11); 
     int answer = tempSubtractionY - tempSubtractionX; 
     String equation = (tempSubtractionY + " - " + tempSubtractionX); 
     subtractionArrayEquation[subtractionArrayGenerationX] = equation; 

     subtractionArrayAnswers[subtractionArrayGenerationX] = answer; 
    } 


    /*Population of Multiplication Equation and Answer Arrays*/ 
    for(int multiplicationArrayGenerationX = 0; multiplicationArrayGenerationX < multiplicationArrayEquation.length; multiplicationArrayGenerationX++){ 

     int tempMultiplicationY = singleDigitNaturalGen.nextInt(11), tempMultiplicationX = singleDigitNaturalGen.nextInt(11); 
     int answer = tempMultiplicationY*tempMultiplicationX; 
     String equation = ""; 
     multiplicationArrayEquation[multiplicationArrayGenerationX] = equation; 

     multiplicationArrayAnswers[multiplicationArrayGenerationX] = answer; 
    } 



    /*Population of Division Equation and Answer Arrays*/ 
    for(int divisionArrayGenerationX = 0; divisionArrayGenerationX < divisionArrayEquation.length; divisionArrayGenerationX++){ 

     int tempDivisionY = singleDigitNaturalGen.nextInt(11), tempDivisionX = singleDigitNaturalGen.nextInt(11); 
     double answer = ((double)tempDivisionY/(double)tempDivisionX); 
     String equation = ""; 
     divisionArrayEquation[divisionArrayGenerationX] = equation; 

     divisionArrayAnswers[divisionArrayGenerationX] = answer; 
    } 



    /*Deciding on Equations to be displayed.*/ 
    int i = 0; 

    System.out.println(additionArrayEquation[0]);//dev 

    /*This puts the equations in a random order in the assortedEquations array, in preparation to be written to the Equations.txt file*/   
    for(int epsilon = 0; epsilon < assortedEquations.length; epsilon++){  

     int equationType = randomEquationPicker.nextInt(4); 

     if(equationType == 0){ 
      if(Menu.additionBool = true){ 
       assortedEquations[epsilon] = additionArrayEquation[i]; 
       assortedAnswers[epsilon] = additionArrayAnswers[i]; 
      } 
      else{ 
       assortedEquations[epsilon] = "Bonus: Enter 0"; 
      } 
     } 

     else if(equationType == 1){ 
      if(Menu.subtractionBool = true){ 
       assortedEquations[epsilon] = subtractionArrayEquation[i]; 
       assortedAnswers[epsilon] = subtractionArrayAnswers[i]; 
      } 

      else{ 
       assortedEquations[epsilon] = "Bonus: Enter 0"; 
      } 
     } 
     else if(equationType == 2){ 
      if(Menu.multiplicationBool = true){   
       assortedEquations[epsilon] = multiplicationArrayEquation[i]; 
       assortedAnswers[epsilon] = multiplicationArrayAnswers[i]; 
      } 
      else{ 
       assortedEquations[epsilon] = "Bonus: Enter 0"; 
      } 
     } 
     else{ 
      if(Menu.divisionBool = true){ 
       assortedEquations[epsilon] = divisionArrayEquation[i]; 
       assortedAnswers[epsilon] = divisionArrayAnswers[i]; 
      } 
      else{ 
       assortedEquations[epsilon] = "Bonus: Enter 0"; 
      } 
     } 
    } 


    /*Writing each equation to the file.*/ 
    try { 
     BufferedWriter writeEquation = new BufferedWriter(new FileWriter("Equations.txt")); 
     BufferedWriter writeAnswer = new BufferedWriter(new FileWriter("Answers.txt")); 

     for(int theta = 0; theta < assortedEquations.length; theta++){ 
      writeEquation.write(assortedEquations[theta]+ "\n"); 
      writeAnswer.write(assortedAnswers[theta] + "\n"); 
     } 



     writeEquation.close(); 
     writeAnswer.close(); 
    } catch (IOException e) {JOptionPane.showMessageDialog(null, "Whoops, there seems to have been an error. Sorry about that.");} 
} 
} 
+0

'「如果你需要任何解釋,請隨時問...」「 - 是的,請您解釋一下代碼和你的問題。細節確實很重要。 –

+0

我加了一些關於我的代碼的更多細節,我無法更好地解釋這個問題,因爲我不知道爲什麼我遇到它。抱歉。 –

+0

我將刪除我的反對附加信息,希望你很快會得到一個體面的答案,但就我而言,我會等待更多的信息,包括更詳細的解釋你當前的代碼,包括什麼方法應該這樣做。還有什麼您嘗試調試代碼,包括使用調試器,顯示你? –

回答

0

我想出了這個問題。我的老代碼閱讀:

int tempDivisionY = singleDigitNaturalGen.nextInt(11), tempDivisionX = singleDigitNaturalGen.nextInt(11); 
double answer = ((double)tempDivisionY/(double)tempDivisionX); 
String equation = ""; 

當它應該已經說過:

String equation = tempDivisionY + "/" + tempDivisionX; 
0

沒有運行這個我假設你只得到"Bonus: Enter 0"

if(Menu.subtractionBool = true) 
if(Menu.subtractionBool == true) 

這兩條線有一個世界的區別。

+0

不管怎樣,最好這樣做,'if(Menu.subtractionBool)' –

+0

我改變了我的條件來閱讀:「Menu.subtractionBool」,但是這並沒有改變方程式文件中的任何內容。感謝您的建議。 –

相關問題