[英]Java: receiving multiple errors when compiling
不想找人帮我做这件事,请给我建议,告诉我哪里出错了*
我正在完成家庭作业并遇到了一些障碍。 以下是任务的基本信息
“编写一个由三个类组成的程序。第一个类将是实际的程序。
第二个类将简单地将字符串转换为小写。
第三个类将有三个方法:
公共静态字符串修剪(字符串 str)
和
公共静态字符串修剪(字符串 str,int len)
和
公共静态字符串挤压(字符串 str)”
我已经为第二个和第三个类编写了代码,它们编译得很好。 对于我的程序,我在编译时不断出错,我无法弄清楚。 我已经研究,一遍又一遍地阅读我的教科书,但我仍然在画一个空白。
这是我的代码
package bmclasses;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
public class BmClasses {
public static void main(String[] args) {
String text1,text2,text3,text4,text5;
// Reading from the file
try {
BufferedReader in = new BufferedReader(new
FileReader("bmIN.txt"));
while (in.ready()) {
String text = in.readLine();
text1 = sUtilities.trimmed(text);
text2 = sUtilities.squeeze(text);
System.out.println("As entered: " + text + "Trimmed and Squeezed: text2");
text3 = sUtilities.trimmed(text2, 10);
System.out.println("As entered: " + text + "trimmed, squeezed, and shortened to 10 characters :"+text3);
text4 = s2Lower.Cap2Low(text2);
text5 = sUtilities.trimmed(text4, 25);
}
in.close();
}
catch (IOException e)
{System.out.println("Input/Output error !"); }
}
}
以下是我收到的错误:
bmclasses/BmClasses.java:29: error: cannot find symbol
text1 = sUtilities.trimmed(text);
^
symbol: variable sUtilities
location: class BmClasses
bmclasses/BmClasses.java:30: error: cannot find symbol
text2 = sUtilities.squeeze(text);
^
symbol: variable sUtilities
location: class BmClasses
bmclasses/BmClasses.java:32: error: cannot find symbol
text3 = sUtilities.trimmed(text2, 10);
^
symbol: variable sUtilities
location: class BmClasses
bmclasses/BmClasses.java:34: error: cannot find symbol
text4 = s2Lower.Cap2Low(text2);
^
symbol: variable s2Lower
location: class BmClasses
bmclasses/BmClasses.java:35: error: cannot find symbol
text5 = sUtilities.trimmed(text4, 25);
^
symbol: variable sUtilities
location: class BmClasses
5 errors
我究竟做错了什么?
编辑
这是我的类 sUtilities 的代码
package bmclasses;
public class sUtilities {
public static String trimmed(String str) {
// calculate the discount amount and total
String oString = "";
if (str == null)
return oString;
else
return str.trim();
}
public static CharSequence trimmed(String str, int len) {
// calculate the discount amount and total
String oString = "";
oString = trimmed(str);
return oString.subSequence(1, len);
}
public static String squeeze(String str) {
// calculate the discount amount and total
return str.replaceAll(" ", " ");
}
}
如果我错了,请纠正我,但看起来您正在 bmclasses 目录中本地的命令行上使用javac
编译代码,如下所示:
C:\some\path\bmclasses> javac BmClasses.java
默认情况下,编译器将使用当前目录作为类路径,当您尝试编译sUtilities
时它会正常工作,但是当您尝试编译BmClasses
并尝试访问类sUtilities
,编译器将尝试通过其完全解析它限定名称,即bmclasses.sUtilities
。
在 Java 中,编译器期望限定名称与源文件所在的目录结构之间存在对应关系。 当它尝试查找依赖项bmclasses.sUtilities
它实际上是在查找bmclasses\\sUtilities.java 。 由于您已经在该目录中,编译器将无法解析相对路径,并提示您无法找到您所指的符号。
您需要做的是从项目的根目录编译您的代码,以便编译器可以找到依赖项(您也可以手动设置类路径,但在这种情况下不值得这样做),如下所示:
C:\some\path> javac bmclasses\BmClasses.java
我看到您已将 BmClasses 定义为 bmclasses 包的一部分。 确保“package bmclasses”位于 sUtilities 和 s2Lower 类的顶部。 如果您的类在不同的包中,那么除非您导入它们,否则 BmClasses 无法找到它们。
它也可能由您编译代码的方式产生。 您使用的是 Eclipse 等 IDE 吗? 如果没有,我强烈推荐它。
忽略所有说你没有声明变量的评论,因为它们不是变量。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.