ユーザーに数値を尋ね、その数値の階乗を取り、別の階乗 (Y,N) を実行するかどうかを尋ねるプログラムを作成することになっています。
次のように動作するはずです:
- 階乗を取る数値を入力してください: 4
- 4!= 24
- 別の階乗 (Y,N) を実行しますか? よ
- N が入力されるまで繰り返す
私の出力は次のようなものです:
- 階乗を取る数値を入力してください:
- 「別の階乗をしますか? (Y,N)?」
4!Y と N のどちらを入力しても = 1 です。
これが私のコードです:
import java.util.Scanner; public class factorial { public static void main ( String [] args ) { Scanner input = new Scanner(System.in); System.out.print("Enter a number you want to take the factorial of: "); int num = input.nextInt(); int fact = 1; System.out.printf("%d! = %d\n ", num, fact, Factorial(num, fact)); } public static int Factorial(int num, int fact) { Scanner input = new Scanner(System.in); char foo; System.out.print("Do another factorial (Y,N)?"); foo = input.next().charAt(0); for (int i = 1; i >= num; i++) { fact *= i; if (foo == 'Y') { System.out.print("Do another factorial (Y,N)?"); foo = input.next().charAt(0); continue; } else { break; } } return fact; } }
変更後:
import java.util.Scanner;
public class factorial
{
public static void main ( String [] args )
{
Scanner input = new Scanner(System.in);
System.out.print("Enter a number you want to take the factorial of: ");
int num = input.nextInt();
int fact = 1;
System.out.printf("%d! = %d\n ", num, Factorial(num, fact));
System.out.print("Do another factorial (Y,N)? ");
char foo = input.next().charAt(0);
while (foo != 'N')
{
System.out.print("Do another factorial (Y,N)? ");
foo = input.next().charAt(0);
System.out.print("Enter a number you want to take the factorial of: ");
num = input.nextInt();
System.out.printf("%d! = %d\n", num, Factorial(num, fact));
}
}
public static int Factorial(int num, int fact)
{
for (int i = 1; i <= num; i++)
{
fact *= i;
}
return fact;
}
}
出力にはまだいくつかの問題があります。
- 階乗を取る数値を入力してください: 4
- 4!= 24
- 別の階乗 (Y,N) を実行しますか? よ
- 別の階乗 (Y,N) を実行しますか? よ
- 階乗を取る数値を入力してください: 4
- 4!= 24
- 別の階乗 (Y,N) を実行しますか? N
- 階乗を取る数値を入力してください: