2016-11-01 33 views
-2

したがって、ファイル内のすべての文字を増やすのに役立つ必要があります。全体のファイルは、すべての情報をユーザから読み込んで取得することができますが、実際にすべての文字を(この場合)ファイルを増やすことになると、空のファイルだけを出力します。すべての文字を1ずつ増やす(JAVA)

このプログラムの目的は、ファイルからすべてのテキストを取得し、文字を1つずつ増減させることです。だから、Aは今はBです。BはBです。BはBです。BはAです。Cは現在B.です。ファイルをエクスポート/閉じるに行くと、空白になります。ここ

はコードの部分である: 一方(fileIn.hasNext()){ letter.add(fileIn.next())。マイtest.txtファイルは、以下の内容が含まれてい

FileReader fr = null; 
    FileWriter fw = null; 
    int c; 
    try { 
     fr = new FileReader("C:\\Zia\\test.txt"); 
     fw = new FileWriter("C:\\Zia\\Result.txt"); 
     while ((c = fr.read()) != -1) { 
      if(c!=32) 
      fw.write((char)--c); 
      else 
       fw.write((char)c); 
     } 
    } catch(IOException e) { 
     e.printStackTrace(); 
    } finally { 
     close(fr); 
     close(fw); 
    } 

、あなたが以下のようにのような何かを行うことができます

import java.util.*; 
import java.io.FileNotFoundException; 
import java.util.Scanner; 
import java.io.PrintWriter; 
import java.io.File; 
import java.util.ArrayList; 

public class Assignment9 
{ 

    public static void main (String[] args) 
    { 
     Scanner in = new Scanner (System.in); 
     Scanner fileIn; 
     File f; 
     char ch = 65; 
     String fileName = ""; 
     boolean userA = false; 
     String usersChoice = ""; 
     ArrayList<String> letter = new ArrayList<String>(); 


     try 
     { 
     System.out.println("Please enter the file name that you would like encrypted/decrypted: "); 
     fileName = in.nextLine(); 

     //Builds the file and attaches the Scanner 
     f = new File (fileName); 
     fileIn = new Scanner (f); 
     PrintWriter fileout1 = new PrintWriter ("decrypt.txt"); 
     PrintWriter fileout2 = new PrintWriter ("encrypt.txt"); 


     System.out.println("Would you like to Decrypt or Encrypt the file?"); 
     usersChoice = in.nextLine(); 
     userA = true; 


     //Loop through the file and translate the characters 
     if (usersChoice.equalsIgnoreCase("Decrypt")) 
     { 
      while (fileIn.hasNext()) 
      { 
       letter.add(fileIn.next()); 

       for (int i = letter.size() - 1; i >= 0; i--) 
       { 
        ch = letter.get(i).charAt(0); 

        ch--; 

        fileout1.println(ch); 
       } 

       //Makes a new line at end of line 
       System.out.println(); 
      } 

      //Decrease every letter by 1 (runs backwords) 


      System.out.println("Decrypt.txt has been created."); 
      fileout1.close(); 

     } 

     //encrypts the file by increasing by 1 
     if (usersChoice.equalsIgnoreCase("encrypt")) 
     { 
      while (fileIn.hasNext()) 
      { 
       letter.add(fileIn.next()); 
      } 

      //Decrease every letter by 1 (runs backwords) 
      for (int i = letter.size() -1; i >= 0; i--) 
      { 
       System.out.println(letter); 

       ch --; 
      } 

      System.out.println("Encrypted.txt has been created."); 
      fileout2.close();; 
     }    
     } //end of try  

     catch (FileNotFoundException e) 
     { 
     System.out.println("Sorry invalid file, please try again"); 
     fileName = in.nextLine(); 
     } 


    } // end of main 

} //end of program 
+1

**ここで**あなたは* fileout1に書き込みますか? –

+0

文字が「A」で、文字数を1減らすとどうなりますか? –

+0

だから、AはZになるはずです。そして、私はどこが間違っていると思いますか?この行は次のようになります。 ch = letter.get(i).charAt(0); ch - ; //この行がファイルに書き込まれないように文字を1つ減らしますか? – TylerK

答えて

0

Hello How are you doing. 

  for (int i = letter.size() - 1; i >= 0; i--) 
      { 
       ch = letter.get(i).charAt(0); 

       ch--; 

       fileout1.println(ch); 
      } 

      //Makes a new line at end of line 
      System.out.println(); 
     } 

全体のコードは次のようですresult.txtには次が含まれますcharを1つ減らした結果は以下のようになります。

Gdkkn Gnv `qd xnt cnhmf- 

リーダーとライターの両方のファイルのファイル名を交換し、charを1増やして復号化を検証することができます。

+0

あなたのコードは私のものと比較されていますが、私の作品は動作しますが、ファイル内のテキスト全体ではなく、ファイルの最初の文字をピックアップするだけです(hasNext()は、より多くのテキストがあり、 ?しかし、それはdoesntです。 – TylerK

関連する問題