Note that there are some explanatory texts on larger screens.

plurals
  1. POMath not calculating right in Java
    text
    copied!<p>I'm having a bit of trouble here. I'm making a math program that asks the user for the number of digits to use in the math questions. It then asks for the type of math problem, and asks the user 10 questions. It checks to see if the answer is right and displays an appropriate message. If wrong, the user can retry the question forever. It then calculates if they scored over 75% and displays a message.</p> <p>All of the popups work just fine, but for whatever reason it keeps telling me that the answer is wrong no matter what I enter. I tried to make sure all of the variable types matched up (doubles) so that there wouldn't be any conversion issues with the response, but I'm new to Java so I have no idea if I did that correctly. </p> <p>Is there any chance you guys can spot the issue with my code? Any help is greatly appreciated. Thanks for viewing. </p> <p>Also thanks to those of you who have already helped me with other issues in this project, I'm still learning Java!</p> <pre><code>import java.util.*; import javax.swing.JOptionPane; /** * */ /** * @author Tyler * */ public class Program { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub Scanner input = new Scanner(System.in); int difficulty = 1; String[] operators = {"plus", "minus", "times", "divided by"}; int selectedOperator = 1; int correctAnswers = 0; int answeredTyped = 0; int difficultyInput = Integer.parseInt(JOptionPane.showInputDialog("Please choose the difficulty. Enter the number of digits to use in each problem.")); if (difficultyInput &gt; 0) { difficulty = difficultyInput; } int arithmeticMethod = Integer.parseInt(JOptionPane.showInputDialog("Choose an arithmetic problem to study: 1 = Addition Only, 2 = Subtraction Only, 3 = Multiplication Only, 4 = Division Only, 5 = Random Problems" )); selectedOperator = arithmeticMethod; new Program().askQuestion(difficulty, null, arithmeticMethod, arithmeticMethod, operators, arithmeticMethod); } public static boolean checkResponse (double primaryInt, double secondaryInt, String operatorText, double response){ if (operatorText.equals("1")){ return (primaryInt + secondaryInt) == response; } else if (operatorText.equals("2")){ return (primaryInt - secondaryInt) == response; } else if (operatorText.equals("3")){ return (primaryInt * secondaryInt) == response; } else if (operatorText.equals("4")){ return (primaryInt / secondaryInt) == response; } return false; } public static String displayResponse (boolean isCorrect){ int randomIndex = (int) (Math.floor(Math.random() * (4 - 1 + 1)) + 1); switch (randomIndex){ case 1: return isCorrect ? "Very Good!" : "No. Please try again."; case 2: return isCorrect ? "Excellent!" : "Wrong. Try once more."; case 3: return isCorrect ? "Nice Work!" : "Don\'t give up!"; case 4: return isCorrect ? "Keep up the good work!" : "No. Keep trying."; } return "Oops..."; } public static void askQuestion(int difficulty, String operatorText, int selectedOperator, int answeredTyped, String[] operators, int correctAnswers){ boolean correctAnswer = false; double primaryInt = Math.floor(Math.pow(10, difficulty-1) + Math.random() * 9 * Math.pow(10, difficulty-1)); double secondaryInt = Math.floor(Math.pow(10, difficulty-1) + Math.random() * 9 * Math.pow(10, difficulty-1)); operatorText = (selectedOperator == 5) ? operators[(int) Math.floor(Math.random() * operators.length)] : operators[selectedOperator - 1]; while(!correctAnswer &amp;&amp; answeredTyped &lt; 10) { double response = Double.parseDouble (JOptionPane.showInputDialog("How much is " + primaryInt + " " + operatorText + " " + secondaryInt + "?")); correctAnswer = checkResponse (primaryInt, secondaryInt, operatorText, response); JOptionPane.showMessageDialog(null, displayResponse(correctAnswer)); answeredTyped++; if(correctAnswer) correctAnswers++; } { while(answeredTyped &lt; 10){ askQuestion(0, null, 0, 0, null, 0); } if((correctAnswers / answeredTyped) &gt;= 0.75) { JOptionPane.showMessageDialog(null, "Congratulations, you are ready to go on to the next level!"); } else{ JOptionPane.showMessageDialog(null, "Please ask your teacher for extra help."); } } } } </code></pre>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload