我必须使用方法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进行编译。
答案 0 :(得分:4)
你的语法错了。你应该使用String defA1[] = str1.split(" ");
。 new
关键字用于调用类构造函数并创建类的新实例。更多信息:Oracle Java Tutorial: Creating Objects
顺便说一下,Java编译器已经添加了import java.lang.*
,无需向此包添加static
导入。
还有一点需要注意,JVM(JRE)并不是为了编译代码而只是为了运行它。您可以使用Java SDK编译Java代码。更多信息:What is the difference between JDK and JRE?
附加:如果你想知道为什么编译器会给你消息错误包str1不存在
编译器正在尝试读取此行
new str1.split(" ");
as 创建split
包中的类str1
的新实例,并将String
参数发送给值为" "
的构造函数。< / em>这显然是错误的。
答案 1 :(得分:2)
使用此
String defA1[] = str1.split(" ");
无需新操作员
答案 2 :(得分:1)
应该是:
String defA2[] = str1.split(" ");