0

プログラムの終わり近くで、ユーザー入力を文字配列に変換しました。文字を反復処理し、配列内の「文字」ごとに、shiftCode の値を加算または減算したいと考えています。shiftCode には、正または負の値を指定できます。「文字」の最初の文字に1を追加するだけで機能する小さな部分があります。

文字内の各文字を繰り返し処理し、shiftCode値を使用して加算または減算するためにi ++を使用する方法を教えてください。

私はそれが次のようになると思います

for(shiftCode; shiftCode === 26; shiftCode++) {
     letter[EVERY LETTER IN THIS THING?] += shiftCode;
}

shiftCode の値を文字ごとに反復処理する方法がわかりません。誰かが私を正しい方向に向けることができれば、私はそれを大いに感謝します.

ありがとう、アーロン

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

/*
 * This program is designed to -
 * Work as a Ceasar Cipher
 */

/**
 *
 *
 */
public class Prog3 {
    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();

            // What ever they give us is probably wrong anyways.
            // Make that input lowercase
            codeWord = codeWord.toUpperCase();
            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!");
        }
        letter[1] += 1;
        System.out.println(letter[1]);
    }
}
4

1 に答える 1

2

配列を反復処理する 1 つの方法を次に示します。

    for(int i = 0; i < letter.length; i++) {
        // using i, you can manipulate and access all elements of the array.
        letter[i] -= shiftCode; // may want more logic in this case.
    }

また、エラー状態を適切に処理していないことにも気付きました。ブロック内で処理するすべてのコードをラップする必要があります。readertry...catch

于 2012-09-08T05:13:08.523 に答える