0

我在我的程序中评论了我所有的错误。我的程序的重点是通过用户输入的任何内容来移动我的输入文件。我注释掉的错误对我来说毫无意义,因为这一切都很有意义,而且计算机并没有按照我想要的方式读取它。不要与我评论其中一个标记的错误之一是“,”相混淆。其他的是“(”和“)”。这些都是错误,在我评论它们的行中的某处需要一个分号。

这是程序的样子:

import java.util.*;
import java.io.*;

class CaesarCipher
{
 public static void main (String [] args) throws FileNotFoundException
 {
  Scanner keyboard = new Scanner(System.in);
  System.out.println("What shift should I use? ");
  int shift = keyboard.nextInt();
  System.out.println("What is the name of the input file? ");
  String name = keyboard.next();
  File f = new File(name);
  Scanner inFile = new Scanner(f);
  System.out.println("What is the name of the output file? ");
  String text = keyboard.nextLine();
  PrintWriter outFile = new PrintWriter(text);
  String encrypted = "";

  while (inFile.hasNextLine())
  {
     String line = inFile.nextLine();
      if ( shift == 1)
     encrypted = caesarEncipher(line, shift);
      else if (shift == 2)
     encrypted = caesarDecipher(line, shift);// the method caesarDecipher(java.lang.String, int) is undefined for the type CaesarCipher
      System.out.println(encrypted);
      outFile.println(encrypted);
  }
 }
  static String caesarEncipher(String text ,int shift) throws FileNotFoundException
  {
   String t = "";
   int i = 0;
   while (i < t.length())
   {  
    if (shift < 0)
    {
        shift = (shift % 26) + 26;
     }
        int move = (char) ((text.charAt(0) - 'A' + shift) % 26 + 'A');
        t += move;
        i++;
        System.out.println(t);
        outFile.println(t);
        return "DONE!";
     }
                                                          // for each token listed, it expects the semi colon.
     static String caesarDecipher(String text, int shift) throws FileNotFoundException // Syntax error on token "(", "," , ")", ; expected      
     {
      return caesarEncipher(input, -shift);
      }
     }
    }
4

4 回答 4

3

您的caesarDecipher方法定义嵌入在方法中caesarEncipher。这不是合法的 Java,而且你把可怜的编译器弄糊涂了。

严格的缩进使这些事情变得非常清楚。如果您使用的是 IDE 或 emacs,请寻找工具来重新缩进整个文件(Unix 下也有命令行工具):

对于 Eclipse :Ctrl++ShiftF

对于 Emacs:突出显示区域(整个文件),然后:Esc Ctrl+\Alt+ Ctrl+\

于 2012-08-07T16:28:55.237 回答
2

您错过了方法 caesarEncipher 的结束 }。使用意图更快地发现这些错误。

于 2012-08-07T16:29:35.767 回答
0

你在你}的最后失踪

static String caesarEncipher(String text ,int shift) throws FileNotFoundException

最后你还有一个额外的

static String caesarDecipher(String text, int shift) throws FileNotFoundException

另请注意,当您在此 ^ 方法中返回时,您正在使用input此方法中未定义的变量。也许你text认为这是你的论点

于 2012-08-07T16:30:56.310 回答
0

如前所述,您缺少一个右括号。我建议使用IDE来发现这些错误。许多人喜欢eclipse但我个人喜欢Intellij。Eclipse 是免费的,而 intellij 的完整版不是。

于 2012-08-07T16:31:00.643 回答