-2
import java.util.Scanner;

public class Rpn_calculator
{
    public static void main(String[] args)
    {
        Scanner keyboard = new Scanner(System.in);


        double ans = 0;
        double n = 0;
        double r = 0;
        String j;


        System.out.println();
        System.out.println();   
        System.out.print("Please enter a value for n  ");
        n = keyboard.nextDouble();  
        System.out.print("Please enter a value for r  ");
        r = keyboard.nextDouble();  
        System.out.println("Please choose one of these operands:+,-,*,nCr,/ to     continue, or q to quit ");
        j = keyboard.nextLine();    
        while (j != "q")
        {
            if(j == "+")
                ans = n + r;
            if(j == "-")
                ans = n - r;
            if(j == "*")
                ans = n * r;
            if(j == "/")
                ans = n / r;
            if(j == "nCr")
                ans = factorial(n + r -1) / (factorial(r)*factorial(n - 1));
            System.out.print(ans);

            System.out.print("Please enter a value for n  ");
            n = keyboard.nextDouble();  
            System.out.print("Please enter a value for r  ");
            r = keyboard.nextDouble();  
            System.out.print("Please choose one of these operands:+,-,*,nCr,/ to continue or q to quit ");
            j = keyboard.nextLine();    
        }   
    }
    public static double factorial(double x);
    {   
        double sum = 1;
        int i; 
        for (i = 0; i<= x; i++);
        sum = sum * i;

        return sum;
    }
} 

この課題のために RPN 計算機を作成しようとしています。機能させるために必要なものは揃っていると思いますが、階乗関数に構文エラーがあります。「メソッド本体がありません」と表示されます。

whileまた、コンパイルすると、文字列入力要求が完全に無視され、プログラムがループ内でロックされる理由がわかりません。本当に明白な何かを見逃していないことを願っています。

4

1 に答える 1

6

あるべきではないセミコロンがいくつかあります。

public static double factorial(double x); // <-- This one
{   
    double sum = 1;
    int i; 
    for (i = 0; i<= x; i++); // <-- This one
    sum = sum * i;

    return sum;
}

署名の直後にセミコロンを置くと、メソッド本体がないため、エラーになります。forループはコンパイラ エラーにはなりませんが、空のループになります。

String.equalsまた、演算子ではなく、Java で文字列を比較するために使用する必要があると思います==

于 2013-01-17T03:00:39.797 に答える