2016-11-11 8 views
0

学校プロジェクトでは、ファイルを取得するメソッドを作成しようとしています。それを暗号化するためにシーザー暗号を使用し、新しい暗号化された単語を出力ファイルに追加し、ファイルのすべての単語を読み込んで、別の暗号化されたファイルを残します。Java Caesar Cipherは文字列の文字列を配列の値に置き換えます

私はに実行している問題は、私は

「予期しないタイプ必要な値。::変数が見つかりました。」取得することです私は新しいとの文字を置き換えるためにしようとしたときにエラー

を1。

ここに私の暗号化方法がありますので、うまくいけば問題を見つけるのに十分でしょう。文字列は不変で

public static void encrypt(File inputFile, int key) throws FileNotFoundException 
{ 
    char[] alpha = new char[26]; 
    for(char ch = 'a'; ch <= 'z'; ch++) 
    { 
     int i = 0; 
     alpha[i] = ch; 
     i++; 
    } 
    Scanner in = new Scanner(inputFile); 
    while(in.hasNext()) 
    { 
     String word = in.next(); 
     word = word.toLowerCase(); 
     for(int i = 0; i < word.length(); i++) 
     { 
      for(int j = 0; j < alpha.length; j++) 
      { 
       if(word.charAt(i) == alpha[j]) 
       { 
        word.charAt(i) = alpha[j + key];  
       } 
      } 
     } 

    } 
} 

答えて

0

あなたは

word.charAt(i) = alpha[j + key]; 

は、その問題を解決しているようだ

StringBuilder buf = new StringBuilder(); 
    for(int i = 0; i < word.length(); i++) 
    { 
     for(int j = 0; j < alpha.length; j++) 
     { 
      if(word.charAt(i) == alpha[j]) 
      { 
       buf.append(alpha[j + key]); 
      } 
      else { 
       buf.append (word[i]); // ?? 
      } 
     } 
    } 

    // do something with buf ?? 
+0

おかげで、のように、代わりにStringBuilderを使用することを検討して行うことはできません。ちょうど不思議なことに、あなたはこれをファイルにどのように印刷しますか?私は一度に1単語ずつ印刷する必要がありますが、そのたびに保存ファイルを上書きしないでどうすればよいでしょうか。 – Redfox2045

+0

@ Redfox2045私はそれが助けてうれしいです。この回答をupvoteおよび/または受け入れることを検討してください。 –

+0

@ Redfox2045あなたの他の質問によると、http://stackoverflow.com/questions/8563294/modifying-existing-file-content-in-java –

関連する問題