1

我必须使用split()下面代码中的方法,但是编译器会抛出错误:

String defA1[] = new str1.split(" ");

抛出的错误说:

error: package str1 does not exist
       String defA2[] = new str1.split(" ");
                                ^

显然它不是一个包,str1是一个先前定义的作为方法参数的字符串,如下所示:

public static int calculateLevenshteinDistance(String str1, String str2) { ... }

我也在导入包java.lang

import java.lang.*;

甚至明确地

import java.lang.String;

请不要建议StringTokenizer,我想知道为什么这不起作用。

你也可以帮我做点别的。我尝试将包作为静态导入,只是想知道是否可以修复它:

import static java.lang.*;

但是编译器会说:

error: cannot find symbol
            import static java.lang.*;
                              ^

它仅在我将“静态”添加到导入时发生,并且它发生在我不知道为什么的任何静态导入中。

我正在使用JVM进行编译。

4

3 回答 3

4

你的语法是错误的。你应该只使用String defA1[] = str1.split(" ");. 该new关键字旨在调用类构造函数并创建该类的新实例。更多信息:Oracle Java 教程:创建对象

顺便说一句,Java 编译器已经import java.lang.*由您添加,无需static向此包添加导入。

还有一点需要注意,JVM(JRE)并不意味着编译代码,只是为了运行它。您使用 Java SDK 编译 Java 代码。更多信息:JDK 和 JRE 有什么区别?

附加:如果你想知道为什么编译器会给你消息错误包str1不存在

编译器正在尝试读取这一行

new str1.split(" ");

as创建包split内的类的新实例,并向构造函数str1发送一个带有 value 的参数。String" "这显然是错误的。

于 2013-04-16T05:06:16.263 回答
2

用这个

String defA1[] = str1.split(" ");

无需新操作员

于 2013-04-16T05:06:31.420 回答
1

它应该是 :

String defA2[] = str1.split(" ");
于 2013-04-16T05:08:07.467 回答