2014-04-23 2 views
2

실습에 사용할 암호화 알고리즘이 있지만 제대로 코딩 할 수 있는지 잘 모르겠습니다. 암호화 방법에 문제가 있습니다.초급 Java 논리 오류 :이 알고리즘을 어떻게 처리해야할지 모르겠 음

내 알고리즘은 다음과 같습니다 (및 인용) : "나머지 자리 수를 더한 다음 (해당 숫자의 합계 + 7)을 10으로 나눕니다."

편집 : 1234는 8901이되어야합니다.

어떻게해야합니까? 나는 바른 길을 가고 있는가? 그래서 숫자가 10 이상이면 10을 빼, 나머지를 얻을 수있는 자리 + 7 7 16 사이에 모든 경우에

import java.util.*; 
    public class encrypt 
    { 
     public static void main(String[] args) 
     { 
     int num; 
     num = getnum(); 
     encrypt(num); 
     } 
     public static int getnum() 
     { 
     Scanner console = new Scanner(System.in); 
     int num; 
     do 
     { 
     System.out.println("Enter a number that has only four digits "); 
     num = console.nextInt(); 
     } 
     while (num < 1000 || num > 9999); 
     return num; 
     } 
     public static int encrypt(int num) 
     { 
     int digit4 = num%10; 
     num = num/10; 
     int digit3 = num%10; 
     num = num/10; 
     int digit2 = num%10; 
     num = num/10; 
     int digit1 = num%10; 
     num = num/10; 
     digit4 = ((digit4 + 7)/10)%10; 
     digit3 = ((digit3 + 7)/10); 
     digit2 = ((digit2 + 7)/10); 
     digit1 = ((digit1 + 7)/10); 
     System.out.print(digit1+" "+digit2+" "+digit3+" "+digit4); 
     return digit4; 
     } 
    } 
+0

샘플 출력 ?? 당신이 원하는 건? –

+0

'나는 옳은 길을 가고 있는가? '가서 실행하고 직접 확인하십시오. –

+0

방금이 코드를 성공적으로 실행했습니다 .. No error buddy. 그냥 –

답변

1

, 즉

if (digit4 >= 10) digit4 -= 10; 
if (digit3 >= 10) digit3 -= 10; 
if (digit2 >= 10) digit2 -= 10; 
if (digit1 >= 10) digit1 -= 10; 
당신은 반환 할 수 있습니다

digit1 * 1000 + digit2 * 100 + digit3 * 10 + digit4 

단지 digit4가 아닙니다. 그 이상으로 9999보다 큰 숫자에서 작동하도록 for 루프를 사용하여 개선하십시오.

+0

그래, 반환에 대해 알고 컴파일러 오류를 방지하기 위해 뭔가를 던져, 고마워. – Alex

관련 문제