2016-06-10 2 views
-4

주어진 숫자 n의 계승을 생성해야하는 프로그램이 있습니다. 사용자가 숫자를 입력하면GUI를 사용하는 Java Factorial은 첫 ​​번째 출력 만 반환합니다.

는 출력은 계산기로 그 후 모든 입력 번호의 요인이다. 코드는 잘 컴파일되지만 계산기는 첫 번째 코드를 제외하고 어떤 계승도 계산하지 않습니다. 이 문제를 해결하기 위해 재귀를 사용할 수 없기 때문에 재귀를 사용하지 않고 답변 만 게시하십시오.

for(int i = 1; i <= number1; i++) 
{ 
    factorial = factorial * i; 
} 

요구 각 입력에 대해 반복 될

import javax.swing.JOptionPane; 

public class Assignment7 
{ 
public static void main(String[] args) 
{ 
int number1; 
int factorial = 1; 
String message; 

number1 = Integer.parseInt(JOptionPane.showInputDialog("Enter a positive integer that you would like factored (Type \"1\" to stop) : ")); 


for(int i = 1; i <= number1; i++) 
{ 
factorial = factorial * i; 


} 



do 
{ 
message = String.format("The factorial of %d is: %d", number1, factorial); 
JOptionPane.showMessageDialog(null, message); 
number1 = Integer.parseInt(JOptionPane.showInputDialog("Enter a positive integer that you would like factored (Type \"1\" to stop) : ")); 

} 
while(number1 != 1); 

} 
} 

답변

2

이 코드 :

여기서 코드이다.

나는 당신의 GF 호출 할 수 있으며,이 방법은 결과를 반환하는 방법으로이 문제를 넣어하는 것이 좋습니다.

0
import javax.swing.JOptionPane; 

public class Assignment7 
{ 
public static void main(String[] args) 
{ 
int number1; 
int factorial = 1; 
String message; 

number1 = Integer.parseInt(JOptionPane.showInputDialog("Enter a positive integer that you would like factored (Type \"1\" to stop) : ")); 


for(int i = 1; i <= number1; i++) 
{ 
factorial = factorial * i; 


} 



do 
{ 
message = String.format("The factorial of %d is: %d", number1, factorial); 
JOptionPane.showMessageDialog(null, message); 
number1 = Integer.parseInt(JOptionPane.showInputDialog("Enter a positive integer that you would like factored (Type \"1\" to stop) : ")); 
factorial = 1; 
for(int i = 1; i <= number1; i++) 
{ 
factorial = factorial * i; 
} 
} 
while(number1 != 1); 

} 
} 
0

올바른 계승을 얻으려면 번호와 계계를 재설정해야합니다.

또한 머리 조절 루프를 사용하는 것이 좋습니다. 무슨 일이 일어나는지 이해하기가 쉽기 때문입니다. 또한 Inputdialog와 문자열의 구문 분석을 int로 한 줄에 넣지 않아도 잘못된 사용자 입력을 처리하는 것이 훨씬 쉬워집니다. 여기 내 솔루션 :

import javax.swing.JOptionPane; 

    class Assignment7 { 
     public static void main(String[] args) { 
      int number1 = 0; 
      int factorial = 1; 
      String message; 

      while (number1 != 1) { 
       String positiveInteger = JOptionPane.showInputDialog("Enter a positive integer that you would like factored (Type \"1\" to stop) : "); 
    // You could check if there was a user-input and also later check if it's a number. 
       if (positiveInteger.length() > 0) { 
        number1 = Integer.parseInt(positiveInteger); 
       } 

       for (int i = 1; i <= number1; i++) { 
        factorial = factorial * i; 
       } 

       message = String.format("The factorial of %d is: %d", number1, factorial); 
       JOptionPane.showMessageDialog(null, message); 

       //Reset everything 
       number1 = 0; 
       factorial = 1; 
       message = ""; 
      } 
     } 
    } 
관련 문제