0
4

4 回答 4

2

我认为问题出在构造函数中

f1.toString()

当你需要做的时候

f1.getName()

加上你的类名已经存在于java中,尝试MyFile使用

最后你想用

public void toString(File f1)

或者

public void extString(File f1)

代替

public  void String(File f1)

它甚至在编译吗?

于 2013-09-01T12:03:05.047 回答
0

您可以使用正则表达式来提取扩展名:

public String getExtension() {
    if (!fileName.contains("."))
        return "unknown extension";
    return fileName.replaceAll(".*\\.([^.]*)", "$1");
}

尽管这似乎是一种好奇心,但老实说,这就是我的编码方式。

于 2013-09-01T12:25:47.970 回答
0

public void String(File f1){不是有效的构造函数,这是一个不返回任何内容的简单方法。

toString()方法也没有重载,因此它将使用不是文件名的默认实现。

int lastDot = f1.fileName.lastIndexOf(".");
if (lastDot >= 1) { System.out.println( f1.subString(lastDot); }

如果有扩展名,会告诉您扩展名从哪里开始,并将打印出扩展名。

您发布的所有其他明智的代码都是不正确的,只是噪音。

于 2013-09-01T12:03:24.847 回答
0

我认为你有一个问题被转载-错误的方法/构造函数名称。

对于分机:

字符串有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;
}

一个边缘情况是点是最后一个字符 - 然后你应该得到一个空的搅拌,可以通过检查 i < fileName len 来做其他事情

于 2013-09-01T14:02:35.710 回答