以下では、文字列を配列に送信するために toCharArray を使用しています。次に、for ステートメントを使用して文字の値を MOVE します...
for(i = 0; i < letter.length; i++){
letter[i] += (shiftCode);
System.out.print(letter[i]);
}
ただし、shiftCodeを使用して値を移動すると...
-1 シフトされます。記号 @ を取得します。文字列をshiftCodeに送信する方法、またはshiftCodeに文字のみを使用するように指示する方法はありますか? 「aaron」などのテキストを表示する必要があり、for ステートメントを使用すると、az のみを反復処理し、すべての記号と数字を無視します。私はそれが同じくらい簡単だと思います...
letter=codeWord.toCharArray(a,z);
しかし、それをさまざまな形式で試してグーグルで検索しても、結果は得られませんでした。おそらくそれは正規表現か何かと関係がありますか?以下に、私のプログラムの完全なコピーがあります。それは私がやりたいように正確に機能します。ただし、文字と記号を反復処理します。また、 toCharArray のオンラインで指示を見つけようとしましたが、引数が存在する場合、それらを見つけることができません。
私のプログラム...
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
/*
* Aaron L. Jones
* CS219
* AaronJonesProg3
*
* This program is designed to -
* Work as a Ceasar Cipher
*/
/**
*
* Aaron Jones
*/
public class AaronJonesProg3 {
static String codeWord;
static int shiftCode;
static int i;
static char[] letter;
/**
* @param args the command line arguments
*/
public static void main(String[] args) throws IOException {
// Instantiating that Buffer Class
// We are going to use this to read data from the user; in buffer
// For performance related reasons
BufferedReader reader;
// Building the reader variable here
// Just a basic input buffer (Holds things for us)
reader = new BufferedReader(new InputStreamReader(System.in));
// Java speaks to us here / We get it to query our user
System.out.print("Please enter text to encrypt: ");
// Try to get their input here
try {
// Get their codeword using the reader
codeWord = reader.readLine();
// Make that input upper case
codeWord = codeWord.toUpperCase();
// Cut the white space out
codeWord = codeWord.replaceAll("\\s","");
// Make it all a character array
letter = codeWord.toCharArray();
}
// If they messed up the input we let them know here and end the prog.
catch(Throwable t) {
System.out.println(t.toString());
System.out.println("You broke it. But you impressed me because"
+ "I don't know how you did it!");
}
// Java Speaks / Lets get their desired shift value
System.out.print("Please enter the shift value: ");
// Try for their input
try {
// We get their number here
shiftCode = Integer.parseInt(reader.readLine());
}
// Again; if the user broke it. We let them know.
catch(java.lang.NumberFormatException ioe) {
System.out.println(ioe.toString());
System.out.println("How did you break this? Use a number next time!");
}
for(i = 0; i < letter.length; i++){
letter[i] += (shiftCode);
System.out.print(letter[i]);
}
System.out.println();
/****************************************************************
****************************************************************
***************************************************************/
// Java speaks to us here / We get it to query our user
System.out.print("Please enter text to decrypt: ");
// Try to get their input here
try {
// Get their codeword using the reader
codeWord = reader.readLine();
// Make that input upper case
codeWord = codeWord.toUpperCase();
// Cut the white space out
codeWord = codeWord.replaceAll("\\s","");
// Make it all a character array
letter = codeWord.toCharArray();
}
// If they messed up the input we let them know here and end the prog.
catch(Throwable t) {
System.out.println(t.toString());
System.out.println("You broke it. But you impressed me because"
+ "I don't know how you did it!");
}
// Java Speaks / Lets get their desired shift value
System.out.print("Please enter the shift value: ");
// Try for their input
try {
// We get their number here
shiftCode = Integer.parseInt(reader.readLine());
}
// Again; if the user broke it. We let them know.
catch(java.lang.NumberFormatException ioe) {
System.out.println(ioe.toString());
System.out.println("How did you break this? Use a number next time!");
}
for(i = 0; i < letter.length; i++){
letter[i] += (shiftCode);
System.out.print(letter[i]);
}
System.out.println();
}
}