凯撒密码使用文件

时间:2016-11-18 10:15:10

标签: java file java.util.scanner

我正在尝试编写一个使用caesar cipher编码纯文本的java程序。我有一个包含纯文本的文件和另一个应该放置编码文本的文件。我不知道问题是什么,但我得到错误:线程中的例外"主要" java.util.NoSuchElementException。请帮帮我!

  import java.io.File;
  import java.io.FileNotFoundException;
  import java.io.PrintStream;
  import java.util.Scanner;

  public class zevendesim {

  public static void main(String[] args)
        throws FileNotFoundException {
    Scanner input=new Scanner(new File("C:\\erida\\t.txt"));
    PrintStream output=new PrintStream(new File("C:\\erida\\c.txt"));
    String text=input.nextLine();
    zevendesim(text, output);
}
public static void zevendesim(String text, PrintStream output)
{

    int i=0;
    String s;
    Scanner data = new Scanner(text);
    while (data.hasNext()) {
        s=data.next();
        if (s.charAt(i) >= 97 && s.charAt(i)<= 120)
        {
            int x = s.charAt(i) - 97;
            x = (x + 2) % 26;
            if (x < 0) 
              x += 26; 
            // = (char) (x + 32);
        }
        output.print(" " + data.next());
    }

}
}

请帮我找一个解决方案!

错误堆栈跟踪是:

  

线程中的异常&#34; main&#34; java的java.util.NoSuchElementException   java.util.Scanner.throwFor(未知来源)at   java.util.Scanner.next(未知来源)at   Zevendesimi.zevendesim.zevendesim(zevendesim.java:33)at   Zevendesimi.zevendesim.main(zevendesim.java:15)

1 个答案:

答案 0 :(得分:1)

错误发生在output.print(" " + data.next());,因为前一行已经使用s=data.next();

读了几行

您可能想将x写入输出?