-2

私は Java を学ぼうとしていますが、少し苦労しています。私は教科書から課題をやろうとしているので、javascript でそれを行い、Java の限られた知識を使ってそれを変換していました。(元の手順は次のとおりです - http://i518.photobucket.com/albums/u341/ACrippledFerret/5ea8ec0e-02aa-4b96-b207-a83c52f8db48_zps2cd2ab7f.jpg )

ほとんどは正しいと思いますが、いくつかのエラーが発生しています。そのほとんどが「(変数)を変数に解決できない」です。私の最後の方法では、多くの変数で発生します。また、どこかでブラケットに問題があるようです...「トークンの構文エラー "}"、{このトークンの後に期待されます」。

誰かがこのコードを修正するのを手伝ってくれるなら、私はとても感謝しています. 私はJavaが初めてなので、これを翻訳するのは少し難しいです。コードの最初のセットは JavaScript で、コードの 2 番目のセットは翻訳された Java です (これは機能しません)。助けてくれてありがとう。

ジャバスクリプト

window.onload=function(){
var difficulty = 1,
    operators = ['plus', 'minus', 'times', 'divided by'],
    selectedOperator = 1,
    correctAnswers = 0,
    answeredTyped = 0;

var difficultyInput = parseInt(prompt('Please choose the difficulty. Enter the number of digits to use in each problem.'), 10);
if(difficultyInput > 0) {
    difficulty = difficultyInput;
}

var arithmeticMethod = parseInt(prompt('Choose an arithmetic problem to study:\n1 = Addition Only\n2 = Subtraction Only\n3 = Multiplication Only\n4 = Division Only\n5 = Random Problems'), 10);
if(arithmeticMethod == 5 || operators[arithmeticMethod - 1]) {
    selectedOperator = arithmeticMethod;
}

function checkResponse(primaryInt, secondaryInt, operatorText, suggestedAnswer) {
    var result = false;
    switch (operatorText) {
      case 'plus':
           return (primaryInt + secondaryInt) == suggestedAnswer;
      case 'minus':
           return (primaryInt - secondaryInt) == suggestedAnswer;
      case 'times':
           return (primaryInt * secondaryInt) == suggestedAnswer;
      case 'divided by':
           return (primaryInt / secondaryInt) == suggestedAnswer;
      default:
        return false;
    }
}

function displayResponse(isCorrect) {
    var randomIndex = 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.';
      default:
           return 'Woops...';
    }
}

function askQuestion() {
    var correctAnswer = false;
    var primaryInt = Math.floor(Math.pow(10, difficulty-1) + Math.random() * 9 * Math.pow(10, difficulty-1));
    secondaryInt = Math.floor(Math.pow(10, difficulty-1) + Math.random() * 9 * Math.pow(10, difficulty-1));
    operatorText = (selectedOperator == 5) ? operators[Math.floor(Math.random() * operators.length)] : operators[selectedOperator - 1];

    while(!correctAnswer && answeredTyped < 10) {
        var response = parseFloat(prompt('How much is ' + primaryInt + ' ' + operatorText + ' ' + secondaryInt + '?'));
        correctAnswer = checkResponse(primaryInt, secondaryInt, operatorText, response);
        alert(displayResponse(correctAnswer));

        answeredTyped++;

        if(correctAnswer)
            correctAnswers++;
    }
}

while(answeredTyped < 10) {
    askQuestion();
}

if((correctAnswers / answeredTyped) >= 0.75) {
    alert('Congratulations, you are ready to go on the next level!');
} else {
    alert('Please ask your teacher for extra help.');
}


}

ジャワ

import java.util.*;
import javax.swing.JOptionPane;
/**
 * 
 */

/**
 * @author Tyler
 *
 */
public class Assignment2 {

    /**
     * @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 > 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;

    }




    public static boolean checkResponse (double primaryInt, double secondaryInt, String operatorText, float response){
        boolean result = false;
        switch (operatorText){
        case "1":
            return (primaryInt + secondaryInt) == response;
        case "2":
            return (primaryInt - secondaryInt) == response;
        case "3":
            return (primaryInt * secondaryInt) == response;
        case "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 && answeredTyped < 10) {
            float response = Float.parseFloat (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 < 10){
        askQuestion(0, null, 0, 0, null, 0);

    }

    if((correctAnswers / answeredTyped) >= 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.");
    }
}
}
}
4

1 に答える 1