我现在正在做一个项目,并且有点困扰它,
项目标签是:
创建一个封装文件概念的类。包括构造函数,getter / setter,toString方法,equals方法。添加的位是我遇到的问题
还写一个返回文件扩展名的方法,即最后一个点(。)后面的字母 文件名 如果文件名是hello1.doc,则该方法应返回doc 如果文件名中没有点(。),则该方法应返回“未知扩展名”
到目前为止,我的代码是适当的File类
public class File {
private String fileName;
public File()
{
}
public File(String fn)
{
this.fileName = fn;
}
public String getName()
{
return this.fileName;
}
public void setName(String name)
{
this.fileName = name;
}
public String toString()
{
return fileName;
}
public boolean equals(File f1)
{
if (f1.getName().equals(fileName))
{
return true;
}
else
{
return false;
}
}
public void String(File f1){
if (f1.toString().contains(".")){
String h=f1.toString();
String[] parts = h.split(".");
String i= parts[0];
String j= parts[1];
System.out.println("File is of type"+" "+parts[1]);
}
else{
System.out.println("Unkown file extension.");}
}
}
我完全不知道如何完成这个。我认为问题在于,当我实例化一个新的'file'对象时,字符串不会通过我的最终if / else传递。向正确的方向轻推将非常感激:)
干杯
这里的Ps是我的测试类(我知道if / else应该在上面的主文件中:) :)
public class Filemain {
public static void main(String[] args) {
File f1 = new File();
File f2 = new File ("test.pdf");
File f3= new File ("results.doc");
System.out.println(f2);
System.out.println(f3);
if (f2.equals(f3))
{
System.out.println("You have not got complete documentation");
}
else
{
System.out.println("You have the complete documentation");
}
答案 0 :(得分:2)
我认为问题出在构造函数中
f1.toString()
当你需要做的时候
f1.getName()
加上您的类名已经存在于java中,请尝试使用MyFile
代替
最后你要使用
public void toString(File f1)
或
public void extString(File f1)
而不是
public void String(File f1)
甚至是编译?
答案 1 :(得分:0)
public void String(File f1){
不是有效的构造函数,这是一个不返回任何内容的简单方法。
toString()
方法也没有重载,因此它将使用默认实现,而不是文件名。
int lastDot = f1.fileName.lastIndexOf(".");
if (lastDot >= 1) { System.out.println( f1.subString(lastDot); }
如果有扩展程序,将告诉您扩展程序的起始位置并打印扩展程序。
您发布的所有其他代码明智的方式都是不正确的,只是噪音。
答案 2 :(得分:0)
您可以使用正则表达式来提取扩展名:
public String getExtension() {
if (!fileName.contains("."))
return "unknown extension";
return fileName.replaceAll(".*\\.([^.]*)", "$1");
}
虽然这似乎是一种好奇心,但老实说我会如何编码。
答案 3 :(得分:0)
我认为你有一个问题重新编写 - 糟糕的方法/构造函数名称。
对于extn:
String有lastIndexOf,用吗? 5行:
String getExtn()
int i = fileName.lastIndexOf(".");//can use last index of character too
String extn = “unknown extension”;
if(i > -1 ){
extn = fileName.subString(i + 1) ;
}
return extn;
}
一个边缘的情况是dot是最后一个字符 - 你应该得到一个空的搅拌然后,可以通过检查我是否< fileName len