当前位置: 首页 > 知识库问答 >
问题:

在try块上非法启动类型

姬和豫
2023-03-14

所以我试着让一个基本的阅读器运行起来,这样我可以在以后的身份验证过程中使用文件。

我遇到的问题是,我在BufferedReader行上遇到一个错误,导致我的try函数抛出一个非法的启动异常,并且它不会运行。Eclipse向我展示了br声明末尾分号上的一个错误,并说我应该放一个{但我不明白为什么这是必要的。

BufferedReader br = new BufferedReader(new FileReader("Assign4.txt"));

我试着把它放在那里,但它破坏了整个try部分。

package main;

import java.io.*;

public class file_interface
{
    BufferedWriter wr = new BufferedWriter(new FileWriter("target.txt"));
    BufferedReader br = new BufferedReader(new FileReader("Assign4.txt"));

        try 
        {
            int count = 1;  
            StringBuilder sb = new StringBuilder();
            String line = br.readLine();            
            while (line != null) 
            {
                sb.append(count++);
                sb.append(line);
                sb.append("\n");
                wr.write(line);
                line = br.readLine();    
            }
        } 
        catch (IOException e) 
        {
            System.err.println("Error: " + e);
        }

        finally
        {
            br.close();
            wr.close();
        }
}
}

共有1个答案

丌官凯康
2023-03-14

任何Java语句都必须在方法中。这个代码不是。

BufferedWriter wr=new BufferedWriter(new FileWriter("target.txt "));工作的事实是因为在您的file_interface类中被声明为默认字段(没有给出范围标记)并且正在初始化。它类似于这样做:

public class file_interface {
    BufferedWriter wr;
    public file_interface() {
         wr = new BufferedWriter(new FileWriter("target.txt"));
    }
}

只需创建一种方法来保持逻辑:

public class file_interface {
    public void foo() {
        //your code goes here...
        //now this is not a field but a variable in the method
        BufferedWriter wr = new BufferedWriter(new FileWriter("target.txt"));
        BufferedReader br = new BufferedReader(new FileReader("Assign4.txt"));
        //rest of your code...
        try  {
             //...
        } catch (...) {
             //...
        }
        //...
    }
}

然后只需在客户端类中调用您的方法。例如,具有main方法的类:

public class AMainClass {
    public static void main(String[] args) {
        file_interface fi = new file_interface();
        fi.foo();
    }
}

另一个例子,一个类有另一个方法:

public class SomeClientClass {
    public void bar() {
        file_interface fi = new file_interface();
        fi.foo();
    }
}

注意:您还应该遵循Java命名约定,因此您应该通过FileInterface或甚至MyFileUtil重命名file_interface,因为接口这个词听起来更像是声明一个,uhm,接口

 类似资料:
  • 此代码段从字符串中提取最后四个字符,并查看它们是否是邮政编码。 我已经评论了NetBeans中报告“非法启动类型错误”的点。 我想知道,在创建类时是否不能使用try-catch?或者,这门课漏了什么吗? 我试着搜索stackoverflow。但是我仍然很困惑。这里有一些链接。 Java非法启动类型 Java错误:非法启动表达式 java:为什么程序会给出“非法启动类型”错误?

  • 问题内容: 我的程序: 我收到此错误:。语法绝对正确,我已经检查了一百万遍。怎么了? 问题答案: 您只能在类级别具有字段声明。这样的if语句必须位于方法,构造函数或初始化程序块中。 您可以消除这样的if语句: 但是我质疑为什么您根本不想在创建时设置此值,而不是响应某些用户操作。

  • 我正在学习Netbeans CRUD应用程序教程(修改为使用我自己的数据库),我发现了一个我根本无法理解的错误。 错误显示“类型的非法开始”;'预期,找不到符号 这是我的代码: 错误在最后4行: 我知道这很简单,但我不知道该怎么解决。我确信这是一个错位的“;”还是什么? 你肯定知道,我对Java是新手。 我已经做了教程所说的一切,但似乎无法解决这个问题... 任何帮助都是伟大的! 谢啦

  • 问题内容: class address { 此代码段从字符串中提取最后四个字符,并查看它们是否为邮政编码。 我评论了NetBeans中报告“非法启动类型错误”的要点。 我想知道在创建类时是否不能使用try-catch?或者,这堂课会错过什么吗? 问题答案: Java并 没有 让你简单地把报表一类的机构。您总是需要在这些语句周围加上一个“块”。 换句话说:第一个工作示例的最简单方法是在类中添加mai

  • 我正在使用MEAN堆栈编写一个Web应用程序。我安装了穆特通过npm这样: 我需要它在我的一个路由文件中: 我使用的是,它每次重启都会抛出以下错误,因为我添加了要求语句。 在过去的两天里,我安装了mongo、node和express。我正在运行OS X优胜美地10.10.2版。

  • 在 Windows 上执行命令将返回以下结果: 运行诊断程序会产生以下结果: