0
나는 사용자가 텍스트와 시프트 번호로 보낼 목적으로 암호 프로젝트를 작성하려고합니다. 그에 따라 결과가 인쇄됩니다. 예를 들어, "Hello World"를 시프트 값 1과 함께 보내면 "Gfmmp Xrsme"가 출력됩니다. 문제는 내가 char 값 (알파벳)의 arraylist를 가지고 있기 때문에 나는 이동에 문제가 있다는 것이다. arraylist에서 char 값을 어떻게 이동합니까?
이
내가 지금까지 무엇을 가지고 : 여기 import java.util.ArrayList;
public class CaesarCipher
{
int shift;
String inputText;
ArrayList<String> arr;
ArrayList<String> exchange = new ArrayList<String>();
public CaesarCipher()
{
shift = 0;
inputText = "";
}
public CaesarCipher(int s, String iT)
{
shift = s;
inputText = iT;
}
public void alphabet()
{
arr = new ArrayList<String>();
arr.add("A");
arr.add("B");
arr.add("C");
arr.add("D");
arr.add("E");
arr.add("F");
arr.add("G");
arr.add("H");
arr.add("I");
arr.add("J");
arr.add("K");
arr.add("L");
arr.add("M");
arr.add("N");
arr.add("O");
arr.add("P");
arr.add("Q");
arr.add("R");
arr.add("S");
arr.add("T");
arr.add("U");
arr.add("V");
arr.add("W");
arr.add("X");
arr.add("Y");
arr.add("Z");
}
public void convert()
{
String revisedText = inputText.replaceAll("\\s","");
//Turn revisedText into an array and match it with array above
revisedText.toUpperCase();
int j = 1;
String letter = "";
for (int i = 0; i < revisedText.length(); i++)
{
exchange.add(revisedText.substring(i, j));
j++;
}
}
public void shift()
{
shift = shift % 26 + 26;
ArrayList<String> newArr = new ArrayList<String>(); // array with shifted values
int pos = 0;
for(int r = 0; r < exchange.size(); r++)
{
if(arr.get(r).equals(exchange.get(r)))
arr.indexOf(r) + shift = pos;
}
}
public String toString()
{
return "";
}
}
가장자리의 경우는 무엇을 의미합니까? 미안하지만 초보자 야. –
엣지 케이스는 W와 같은 문자열에서 문자를 얻고 Shift를 5로하면 어떻게됩니까? 내 코드는 랩핑되지 않고 대신 B 문자를 가져옵니다. \ –
어떻게 수정합니까? –