私は、暗号化機能にUserInputからの単語間の空白と記号を無視させようとしています。 isWhitespace
を使用する必要がありますか?それを実装する方法は?シーザー暗号でスペース文字を変更していない
このプログラムの出力はまったく正しいので、各文字を次の7文字にシフトします。スペースや昏睡で区切られた2単語分のシフトを受け付けません。
私はJavaの驚くべき世界に新しいです&私はそれを本当に楽しんでいます!したがって、私が始めてから3週間です。
私は、暗号化機能にUserInputからの単語間の空白と記号を無視させようとしています。 isWhitespace
を使用する必要がありますか?それを実装する方法は?シーザー暗号でスペース文字を変更していない
このプログラムの出力はまったく正しいので、各文字を次の7文字にシフトします。スペースや昏睡で区切られた2単語分のシフトを受け付けません。
私はJavaの驚くべき世界に新しいです&私はそれを本当に楽しんでいます!したがって、私が始めてから3週間です。
これには2通りの方法があります。キャラクタの正の一致または負の一致を作成することです。ポジティブマッチバリアントでは、最初にplainText.charAt(i)
が保持したい文字であるかどうかをチェックし、その場合はループでcipherText
とcontinue
に追加します。
indexOf
がアルファベットに文字を含まないことを示す-1
を返すかどうかを確認することができます。その場合は同じことをします:それを追加して続行します。これは、私が古典的なCeasarの "再生"暗号で見た一般的な方法です:
// introduce a local variable, you don't want to perform charAt twice
char c = plainText.charAt(i);
int charPosition = ALPHABET.indexOf(c);
// if charPositions is -1 then it is not found
if (charPosition == -1) { // or define a constant NOT_FOUND = -1
cipherText += c;
// continue with the for loop
continue;
}
それは働いた。 パンチに感謝します! –
forループで出会った**すべての**文字を転記する必要はありません。 if条件が必要です。なぜあなた自身がこれを最初に作り、あなたが思いつくことができるのか見てみませんか?また、より良いフォーマットのコードを投稿してください。 –