私はJavaを学ぼうとしていますが、誰かが私を正しい方向に向けることができることを願っています. Java で caesar cipher プログラムを構築しようとしています。カスタム文字列を使用しようとしていますが、カスタム文字列で構成される配列を参照するのに問題があります (たとえば、1 のシフトを使用すると、'a' は'b' になり、'z' は 'A' になり、'?' は '@' になります (実際のカスタム文字列はプログラム内の配列にリストされます)。私が今持っているプログラムでは、az と AZ をシフトできますが、特殊文字にシフトし続けるにはそれが必要です。現在、文字列を参照していないことはわかっていますが、参照する方法がわかりません! どんな助けでも大歓迎です!
package caesarcipher;
import java.util.Scanner;
public class Caesarcipher
{
public static void main(String[] args)
{
Scanner scan = new Scanner (System.in);
System.out.println("Please enter the shift you would like to use:");
String shift = scan.next();
int shiftvalue = Integer.parseInt(shift);
System.out.println("The shift will be: " + shiftvalue);
System.out.println("Please enter text:");
String text = scan.next();
String ciphertext = encryptCaesar(text, shiftvalue);
System.out.println(ciphertext);
}
private static String encryptCaesar(String str, int shiftvalue)
{
if (shiftvalue < 0)
{
shiftvalue = 81 - (-shiftvalue % 81);
}
String result = "";
for (int i = 0; i < str.length(); i++)
{
char ch = encryptCharacter(str.charAt(i), shiftvalue);
result += ch;
}
return result;
}
private static char encryptCharacter(char ch, int shiftvalue)
{
String[] values = {"a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", " ", "!", "\\", "\"", "#", "$", "%", "&", "'", "(", ")", ",", "-", ".", "/", ":", ";", "?", "@"};
if (Character.isLowerCase(ch))
{
ch = (char) ('a' + (Character.toLowerCase(ch) - 'a' + shiftvalue) % 81);
}
else if (Character.isUpperCase(ch))
{
ch = (char) ('a' + (Character.toUpperCase(ch) - 'a' + shiftvalue) % 81);
}
return ch;
}
}