为什么user.home返回“\”而不是“/”?

时间:2013-04-15 12:21:11

标签: java windows

也许你们中的一些人会告诉我错误在哪里,因为我坐在这里几个小时并没有看到任何东西。

程序应该检查是否可以在txt文件中找到if并将其返回到底部。

关于user.home的第二个问题 当我使用它获取"C: \ Users \ Daniel / test / Test.java"时程序不起作用当我设置"C :/ Users / Daniel / test / Test.java"程序的路径开始找到我的.txt文件时,但我不能保留它,因为它必须是由user.home发现:(

public class Main {

      public static void main(String ... args) throws Exception  {
      String usrHome = System.getProperty("user.home");
      Finder finder = new Finder(usrHome + "/Testy/Test.java");
      int nif = finder.getIfCount();
      System.out.println("Number found 'if'": " + nif);
      }
}

查找课程:

import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;

public class Finder {
String file;
Finder(String file){
        file = this.file;
}

int getIfCount() throws FileNotFoundException{  
    int count = 0;  String tmp; String lf = "if";

    Scanner sc = new Scanner (new File("C:/Users/Daniel/Testy/Test.java"));
        while(sc.hasNext()){
            tmp = sc.next();
            System.out.println(tmp); //to check if it works correctly
            if(tmp == lf){
                count++;
            }
        }

        sc.close();

    return count;
}


}

结果应如下所示:

号码找到“if”:3

因为有三个这样的元素,虽然结果总是0

2 个答案:

答案 0 :(得分:1)

  

结果始终为0

由于==String一起使用,因此在比较两个equals()

时,请尝试使用string
 if (tmp.equals(lf)) {
          count++;
     }

答案 1 :(得分:0)

进行文件名连接的更好方法是:

File home = new File(System.getProperty("user.home"));
File file = new File(home, "Testy/Test.java");
/* Or even ...
File file = new File(new File(home, "Testy"), "Test.java");
*/
Finder finder = new Finder(file);

这避免了需要了解平台路径名表示。

错误计数问题是由Java 101的基本错误引起的。您正在使用'=='来比较字符串。它(通常)不起作用。使用String.equals(...)