-3

我有以下代码读取一个文件,该文件具有单个数字或 x/y 格式的 3 个整数,其中 x 和 y 一样是 int。

我正在尝试读取文件,然后在每个空白处拆分,以隔离字符串的每个部分,最终使用“parseInt”将它们变成整数。到目前为止我有

BufferedReader br = new BufferedReader(new FileReader("input1.txt"));

            String line = br.readLine();

            while (line != null){
                String[] lines = line.split(" ");

我假设在此之后它应该看起来像这样作为一个例子

行[0] = 4

行[1] = 4/2

看着这个,我假设我可以使用 lines[1] 等解析每个部分

所以我的问题是如何检查“/”,因为如果它有破折号,我将无法使用 parseInt。我假设像and if语句,如果行有“/”等......但我不确定语法,

任何帮助,将不胜感激,

问候,

詹姆士

4

5 回答 5

3

行数组中的 foreach 元素使用该String.Contains()方法检查字符串是否包含“/”。如果返回 true,则使用“/”作为分隔符执行另一个拆分。然后,您将拥有一个可以解析为整数的 x 和 y 值数组。

于 2013-04-19T11:53:29.230 回答
0

您可以使用contains方法检查该行是否包含“/”,如果找到它,您可以使用“/”分割该行,如下所示:

String s = "4/2";
if (s.contains("/")) {
   String[] split = s.split("/");
   int x = Integer.parseInt(split[0]);
   int y = Integer.parseInt(split[1]);

}
于 2013-04-19T11:56:16.653 回答
0

有这个方法可以帮助你:String.indexOf()

    int slashIndex = line.indexOf('/');
    if (slashIndex != -1) {
        double x = Double.parseDouble(line.substring(0, slashIndex));
        double y = Double.parseDouble(line.substring(slashIndex + 1));
        double value = x / y;
        System.out.println(line + " = " + value); // or else...
    }
于 2013-04-19T11:51:16.897 回答
0

尝试这个:

String line ="";

while ((line=br.readLine())  != null){
    if(line.contains("/")){
        String[] lines = line.split("/");
        //parse 
    }
    else{ 
        String[] lines = line.split(" ");
        //parse 
    }
}
于 2013-04-19T11:53:57.900 回答
0

你不需要检查你可以直接使用replace 或 replaceAll

str.replaceAll("/", "");

顺便说一句,您的循环不会按原样工作,您需要br.readLine()为每一轮调用:

while ((line = br.readLine()) != null){
  for (String ln: line.split(" ")){
    try{
      anyIntVar = Integer.parseInt(ln.replaceAll("/", ""));
      // ...
    }catch (NumberFormatException nfe){
      // handle exception
    }
  }
}
于 2013-04-19T11:54:46.697 回答