2017-12-16 3 views
0

私は、暗号化機能にUserInputからの単語間の空白と記号を無視させようとしています。 isWhitespaceを使用する必要がありますか?それを実装する方法は?シーザー暗号でスペース文字を変更していない

このプログラムの出力はまったく正しいので、各文字を次の7文字にシフトします。スペースや昏睡で区切られた2単語分のシフトを受け付けません。

私はJavaの驚くべき世界に新しいです&私はそれを本当に楽しんでいます!したがって、私が始めてから3週間です。

+0

forループで出会った**すべての**文字を転記する必要はありません。 if条件が必要です。なぜあなた自身がこれを最初に作り、あなたが思いつくことができるのか見てみませんか?また、より良いフォーマットのコードを投稿してください。 –

答えて

0

これには2通りの方法があります。キャラクタの正の一致または負の一致を作成することです。ポジティブマッチバリアントでは、最初にplainText.charAt(i)が保持したい文字であるかどうかをチェックし、その場合はループでcipherTextcontinueに追加します。

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; 
} 
+0

それは働いた。 パンチに感謝します! –

関連する問題