2017-10-26 2 views
2

나는 지난 2 시간 정도이 문제를 해결하기 위해 노력해 왔으며로드 블록을 만났습니다. 나는 실제로 나누기를 수행 할 수 있지만 0이 아닌 나머지를 인쇄 할 때 출력이 일치하지 않습니다. 나는 내가 뭘 잘못하고 있는지 알고 싶다.나눗셈 및 모듈러스 연산자가없는 나머지 및 나머지

public class Division { 
    public static void main(String[] args) { 
     int numerator = 0; 
     int numeratorprint = 0;  
     int denominator = 0; 
     int product = 0; 
     int remainder = 0; 
     int counter = 1; 

     Scanner input; 
     input = new Scanner(System.in); 
     System.out.print("Enter two positive intergers for division:\n"); 
     numerator = input.nextInt(); 
     numeratorprint = numerator; 
     denominator = input.nextInt(); 

     while ((numerator < 0) || (denominator < 0)) { 
     System.out.print("Enter two positive intergers for division:\n"); 
     numerator = input.nextInt(); 
     denominator = input.nextInt(); 
     } 
     if (numerator == 0){ 
     System.out.print(numerator + "/" + denominator + " = " + numerator + " with a remainder of " + numerator); 
     } 
     else if (denominator == 0){ 
      System.out.print("This result is undefined (Cannot divide by Zero)"); 
     } 
     else if (denominator > numerator){ 
     System.out.print("Cannot do proper fractions"); 
     } 
     else { 
     while (numerator > denominator){ 
       counter++; 
       numerator = numerator - denominator; 
       } 
     } 
     product = counter * denominator; 
     remainder = numeratorprint - product; 
     System.out.println(numeratorprint + "/" + denominator + " = " + counter + " with a remainder of " + remainder); 
    } 
} 

/* Sample I/O 1 
Enter two positive intergers for division: 
25 
5 
OUTPUT: 
25/5 = 5 with a remainder of 0 

Sample I/O 2 
Enter two positive intergers for division: 
27 
5 
OUTPUT: 
27/5 = 6 with a remainder of -3 
*/ 
+0

주를 제거 할 수 있습니다 분자가 적당한 비율 때입니다 분모보다 작은 경우 그. 부적절한 분수는 그 반대의 경우입니다. – HyperNeutrino

+0

감사합니다., 정정 해주십시오. – malmonte

답변

0

난 당신이 내가 몇 가지 숫자를 테스트 1이 아닌 0에서 당신의 카운터를 시작하고이 잘 그것을 해결하기 위해 보인다 변화하는 위치를 하나의 오류에 의해 오프를 생각합니다. 그래서 당신은 때 제수의 경우를 설명하기 위해

while (numerator >= denominator) {... 

될하기 위해 다른 블록에 while 루프를 조건으로 변경해야합니다, 또한

int counter = 0; 

int counter = 1; 

변경 배당금을 균등하게 나눕니다.

+0

카운터가 0으로 설정되면 출력은 다음과 같습니다. 나누기에 대해 양수 값 2 개를 입력하십시오. 25/5 = 4 나머지 5는 4로 입력하십시오. 문제가되었지만 그렇지 않았습니다. 아마 다른 곳에서 실수를 저지르고있을 것입니다. – malmonte

+0

내가 전에 말했던 것을 당신이 옳다고 말하면서 카운터를 변경하면 나머지가 0 일 때 numerator

+0

아! 나는 그 문제를 발견했다. else 블록의 while 루프에 대한 조건을 numerator> = denominator 인 동안 변경해야만 최종적으로 균등하게 분할 된 숫자 쌍 (여기서 remainder = 0)에 카운터 증분이 하나씩 생깁니다. 나는이 계시들을 반영하기 위해 나의 대답을 편집했다. 그것은 자신과 같은 오버플로 스택에 새로운 것 같습니다 - 만약 내가 도움이 되었다면/upvote 대답을 허용하십시오. –

0

코드에 오류가 거의 없습니다. 1. 중복 변수 2 왜 모듈 형 연산자를 사용하지 않습니까? 3. 당신은 while 루프를 너무

public class Division { 
    public static void main(String[] args) { 
     Scanner input; 
     input = new Scanner(System.in); 
     System.out.print("Enter two positive intergers for division:\n"); 
     int numerator = input.nextInt(); 
     int numeratorprint = numerator; 
     int denominator = input.nextInt(); 
     int quotient = 0; 
     int remainder = 0; 

     while ((numerator < 0) || (denominator < 0)) { 
      System.out.print("Enter two positive intergers for division:\n"); 
      numerator = input.nextInt(); 
      denominator = input.nextInt(); 
     } 
     if (numerator == 0) { 
      System.out.print(numerator + "/" + denominator + " = " + numerator + " with a remainder of " + numerator); 
     } else { 
      if (denominator == 0) { 
       System.out.print("This result is undefined (Cannot divide by Zero)"); 
      } else { 
       if (denominator > numerator) { 
        System.out.print("Cannot do proper fractions"); 
       } else { 
        remainder = numerator % denominator; 
        quotient = ((numerator/denominator) - (remainder/denominator)); 

       } 
      } 
     } 
     System.out.println(numeratorprint + "/" + denominator + " = " + quotient + " with a remainder of " + remainder); 
    } 
} 
+0

모듈러스 연산자와 나눗셈 연산자를 사용하지 않고 연산을 수행해야합니다. – malmonte

+0

그렇다면 카운터가 정확한 값을 반환하는지 확인하십시오. 인쇄 값은 카운터 -1이어야합니다. – BRjava