我有以下代码读取一个文件,该文件具有单个数字格式的3个整数,或者x / y,其中x是一个整数,为y。
我正在尝试读取文件,然后在每个空格处拆分以隔离字符串的每个部分,最后使用“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
看看这个我假设我可以使用行[1]等解析每个部分
所以我的问题是如何检查“/”,因为如果它有破折号我将无法使用parseInt。我假设类似if语句,如果行有“/”等...但我不确定语法,
任何帮助将不胜感激,
此致
詹姆斯
答案 0 :(得分:3)
lines数组中的Foreach元素使用String.Contains()
方法检查String是否包含“/”。如果返回true,则使用“/”作为分隔符执行另一次拆分。然后,您将拥有一个x和y值的数组,可以将其解析为整数。
答案 1 :(得分: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...
}
答案 2 :(得分:0)
试试这个:
String line ="";
while ((line=br.readLine()) != null){
if(line.contains("/")){
String[] lines = line.split("/");
//parse
}
else{
String[] lines = line.split(" ");
//parse
}
}
答案 3 :(得分:0)
您无需检查是否可以直接使用replace or 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
}
}
}
答案 4 :(得分: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]);
}