Notepad ++中的多类

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Notepad ++中的多类相关的知识,希望对你有一定的参考价值。

所以我不熟悉Notepad ++并在Blue J.中有一个工作程序。我试图将其转移但我继续收到错误:

“Average.java:5:错误:类UserInput是公共的,应该在名为UserInput.java的文件中声明公共类UserInput ^

注意:Average.java使用未经检查或不安全的操作。

注意:使用-Xlint重新编译:取消选中以获取详细信息。 1错误“

我认为这与我编写每个课程的方式有关,但我不确定如何修复它。

答案

文件中只允许一个公共类,它应该与文件具有相同的名称。

第一个解决方案在错误中很好地定义。 “UserInput [...]应该在名为UserInput.java的文件中声明”。 第二种解决方案是改变类的可见性

在A.java

public class A {}
class B{}
protected class C{}
private class D{}

public class E{} //THIS IS NOT ALLOWED, it should be in E.java

请注意,即使只能在文件中定义一个公共类,也不必具有公共类。

X.Java

protected class X{} //this is valid. 

但是不要在此文件中添加另一个类作为公共,只有X可以在X.java中公开

另一答案

在Java中,每个java文件只能声明一个公共类。因此,为了快速解决您的问题,您可以简单地将UserInput类拆分为它自己的文件UserInput.java,就像那样简单。

虽然有点复杂,但你可以查看Inner ClassesLocal Classes,这将允许你在一个文件中声明一个额外的类。

读一读

这是一个LocalClass的例子(代码取自Local Inner Classes Documentation

public class LocalClassExample {

    static String regularExpression = "[^0-9]";

    public static void validatePhoneNumber(String phoneNumber1, String phoneNumber2) {
        final int numberLength = 10;

        // Valid in JDK 8 and later:

        // int numberLength = 10;

        class PhoneNumber {

            String formattedPhoneNumber = null;

            PhoneNumber(String phoneNumber) {
                // numberLength = 7;
                String currentNumber = phoneNumber.replaceAll(
                regularExpression, "");
                if (currentNumber.length() == numberLength)
                    formattedPhoneNumber = currentNumber;
                else
                    formattedPhoneNumber = null;
            }

            public String getNumber() {
                return formattedPhoneNumber;
            }

            // Valid in JDK 8 and later:

            // public void printOriginalNumbers() {
                // System.out.println("Original numbers are " + phoneNumber1 +
               // " and " + phoneNumber2);
            // }
        }

    PhoneNumber myNumber1 = new PhoneNumber(phoneNumber1);
    PhoneNumber myNumber2 = new PhoneNumber(phoneNumber2);

    // Valid in JDK 8 and later:

    // myNumber1.printOriginalNumbers();

    if (myNumber1.getNumber() == null) 
        System.out.println("First number is invalid");
    else
        System.out.println("First number is " + myNumber1.getNumber());
    if (myNumber2.getNumber() == null)
        System.out.println("Second number is invalid");
    else
        System.out.println("Second number is " + myNumber2.getNumber());

    }

    public static void main(String... args) {
       validatePhoneNumber("123-456-7890", "456-7890");
    }
}

这段代码会打印出来

First number is 1234567890
Second number is invalid

正如@AxelH所说,对于没有太多知识的人来说这可能有点复杂,但这是一个有趣的小练习。为了更简单,我会推荐给@AxelH答案。

另一答案

class UserInput是public,应该在名为UserInput.java的文件中声明

我想这个例外是不言自明的。只需将文件名重命名为UserInput.java即可使用!

以上是关于Notepad ++中的多类的主要内容,如果未能解决你的问题,请参考以下文章

预测 svm 中的多类

H2O randomForest中的多类分类

使用 CNN 的多类图像分类中的错误

谷歌浏览器调试jsp 引入代码片段,如何调试代码片段中的js

VSCode自定义代码片段——JS中的面向对象编程

在下面的代码片段中的剩余 ='passthrough' 处的代码中出现语法错误