編集:コードを少し変更しました。綺麗にしてみました…
わかりました、私はJavaの完全な初心者です。メッセージ内の文字を一定量シフトする必要がある場合、CaesaerCipher を作成する必要があります (例: シフト 1 = A が B になり、B が C になるなど。シフト 2 = A->C、B->D、等。)
私は非常に多くの方法を試しましたが、まったくどこにも行きません。何を試せばいいのかわからない。ヘルプ?
import java.util.*;
import java.io.*;
public class CaesarCipher {
public static void main(String[] args)
throws FileNotFoundException, IOException {
System.out.println("Welcome to CaesarCipher");
System.out.print("Enter 1 to encipher, or 2 to decipher (-1 to exit): " );
Scanner console = new Scanner(System.in);
int i = console.nextInt();
if (i == -1) {
System.out.print("DONE!");
//repeat question encipher/decipher/quit until choose quit
}
if (i == 1) {
System.out.println();
System.out.print("What shift should I use? ");
int j = console.nextInt();
System.out.println();
System.out.print("What is the input file name? ");
caesarEncipher();
if (i == 1) { //from answer to encipher, decipher, or exit
System.out.println(strLine);
//send to String caesarDecipher
//?????????????
}
// if (i == 2) { //from answer to encipher, decipher, or exit
//send to String caesarEncipher
//?????????????
// }
System.out.print("What is the output file name? ");
String fileName = new Scanner(System.in).nextLine();
//File file = new File( fileName );
// fstream = new FileInputStream("/Users/steph/Desktop/Programming/!6 Problem Set TUES/PartB/6/cipher.txt");
//change (".txt") to -fileName- ???
//File file = new File( fileName );
// while ((strLine = br.readLine()) != null) {
// System.out.println (strLine);
}
}
public static String caesarEncipher (int k)
throws FileNotFoundException, IOException {
//input file name code...
//String fileName = scanner.nextLine();
FileInputStream fstream = new FileInputStream("/Users/steph/Desktop/Programming/!6 Problem Set TUES/PartB/6/cipher.txt");
DataInputStream in = new DataInputStream(fstream);
BufferedReader br = new BufferedReader(new InputStreamReader(in));
String strLine;
while ((strLine = br.readLine()) != null) {
System.out.println (strLine);
}
in.close();
System.out.println();
int shiftKey = Integer.parseInt(k[1]);
shiftKey = shiftKey % 26;
String cipherText = "";
for (k=0; k<strLine.length(); k++){
int asciiValue = (int) strLine.charAt(k);
if (asciiValue < 65 || asciiValue > 90){
cipherText += strLine.charAt(k);
continue;
}
int basicValue = asciiValue - 65;
int newAsciiValue = 65 + ((basicValue + shiftKey) % 26) ;
cipherText += (char) newAsciiValue;
}
System.out.print(cipherText);
in.close();
System.out.println();
}
}
//ignore any character that is not an uppercase alphabetic!!!!!!!!!
// public static String caesarDecipher (String input, int shift) {
//reverse process to decipher
//go back to what shift (line 11-12): j
//make it -inputted number
//ignore any character that is not an uppercase alphabetic!!!!!!!!!
// }
// public static String alphabet (?) {
// Iterator<String> abc = new Abc<Integer>()??;
//list [A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, Y, Z]
//rotate(list, distance)
編集:問題は、私がスターを付けた場所です。k を配列にする必要があります。残りのコードを台無しにしないでそれを行う方法がわかりません。学習に関しては、このすべてのコードで十分だと思うでしょう。BBCode (何もない) しか知らなかった私は、これになりました。私は心理学専攻です。私の脳はこのようには機能しません。楽しいのですが、壁にぶち当たります。
Edit2:正確なエラーは「配列が必要ですが、intが見つかりました」です