2014-01-27 5 views
-4

문자열을 "암호화"하는 안드로이드 프로그램을 작성 중입니다. "abz"를 입력하면 "bca"가 출력됩니다. 기본적으로 해당 문자열의 각 개별 문자는 다음 문자로 변경됩니다.문자열의 문자 값 변경 Java

String alphabet = "abcdefghijklmnopqrstuvwxyza"; 
String newstr = ""; 

for (int i = 0; i < str.length(); i++) { 
    if (alphabet.indexOf(str.charAt(i)) != -1) { 
     newstr += alphabet.charAt(alphabet.indexOf(str.charAt(i)) + 1); 
    } else { 
     newstr += str.charAt(i); 
    } 
} 

자바는 자바 스크립트와 같은 var 키워드 그래서 당신은해야하지 않습니다 나는

+6

Java로 해 보았습니까? – Prince

+1

이 암호는 데이터를 안전하게 인코딩하기에는별로 좋지 않습니다. – ArtOfWarfare

+0

죄송합니다. StackOverflow에서는 이러한 유형의 질문이 권장되지 않습니다. 시피, JS에서 구현하여 * 뭔가 *를 했음에도 불구하고 충분하지 않습니다 ... 우리가 해결할 수있는 몇 가지 Java 시도를 보여주십시오! –

답변

2

몇 가지 사소한 수정 JAVA에서이 작업을 수행 할 어떻게 자바 스크립트

var alphabet = "abcdefghijklmnopqrstuvwxyza", 
var newstr = ''; 

for (var i = 0; i < str.length; i++) { 
    if (alphabet.indexOf(str[i]) != -1) { 
     newstr += alphabet[alphabet.indexOf(str[i]) + 1]; 
    } else { 
     newstr += str[i]; 
    } 
} 

이 구현 명시 적으로 변수를 입력하십시오. 다른 점은 Stringstring[pos]이 아닌 string.charAt(pos)을 사용하여 색인됩니다.

String은 Java에서 변경할 수 없으므로 String에 추가 할 때마다 새로운 성능이 생성되므로 상당한 성능 문제가 발생합니다. StringBuffer 또는 StringBuilder이 더 적합합니다. 여기

라이브 데모 : http://ideone.com/ZrZL0L

2

나는 StringBuilder 클래스를 사용하는 것이 좋습니다 것입니다.

StringBuilder sb = new StringBuilder(); 
sb.append(somechar); 
sb.append(somechar); 
sb.append(somechar); 

이렇게하십시오. pcnThird가 지적했듯이 String 클래스는 변경할 수 없습니다. StringBuilder가 아니므로이 기능을 사용하면 좋습니다.

끝나면 문자열을 sb.toString();까지 가져옵니다.

0

나는 사람들이 charAt를 사용하여 제안하는 이유를 잘 모르겠어요,하지만 난 당신이 문자를 반복해야한다고 생각 자체

String s = /* words */; 
char[] sentence = s.toCharArray(); 
for (int i = 0; i < sentence.length; i++) { 
    if (Character.toLowerCase(char[i]) == 'z') { 
     if (Character.isUpperCase(char[i])) { 
      char[i] = 'A'; 
     } else { 
      char[i] = 'a'; 
     } 
    } else { 
     char[i]++; 
    } 
} 
String encoded = new String(sentence); 

이 만 추가 문자열 인스턴스 이후 (StringBuilder에 필요)을 생성하지 않으며,이다 상대적으로 간단하다.