所以我有一个文本文件(file.txt),里面有一个长号。基本上,这个数字与PI相似。我需要从文件中一次读取10位数字。例如:
文件中的数字:
3.14159265358979323846264338327950288419716939937510582097494459230781640628
我需要取其前十位数字:3.141592653
并将其传递给一个函数
返回true
或false
。如果我收到true
,则该函数停止并返回10
数字。如果数字为假,那么我接下来的10位数1415926535
,然后传递它
进入功能。
我如何一次读取10位数的文件。
答案 0 :(得分:0)
答案 1 :(得分:0)
好的,这是一个草稿,将此逻辑构建到您现有的代码中,编辑您的问题,我们可以帮助您完成它。
使用的关键方法是FileReaders read()获取单个char的方法(如果没有,则返回-1)和skip()忽略一定量的chars(已处理)
(对不起,有点匆忙制作不好)
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
public class SimpleReader {
File theSourceFile = new File("D:\\<yourPath>\\input.txt");
int nrOfCharsToRead = 10;
int nrOfCharsProcessed = 0;
public static void main(String[] args) {
new SimpleReader().process();
}
public void process(){
System.out.println(getNext(nrOfCharsToRead));
System.out.println(getNext(nrOfCharsToRead));
System.out.println(getNext(nrOfCharsToRead));
System.out.println(getNext(nrOfCharsToRead));
System.out.println(getNext(nrOfCharsToRead));
System.out.println(getNext(nrOfCharsToRead));
System.out.println(getNext(nrOfCharsToRead));
System.out.println(getNext(nrOfCharsToRead));
System.out.println(getNext(nrOfCharsToRead));
System.out.println(getNext(nrOfCharsToRead));
}
private String getNext(int nrOfCharsToRead){
try {
FileReader reader = new FileReader(theSourceFile);
StringBuffer b = new StringBuffer();
reader.skip(nrOfCharsProcessed);
char c;
int counter = 0;
StringBuffer sb = new StringBuffer();
while((c = (char) reader.read()) != -1 && counter < nrOfCharsToRead){
sb.append(c);
nrOfCharsProcessed++;
counter++;
}
reader.close();
return sb.toString();
} catch (IOException e) {
e.printStackTrace();
}
return "";
}
}
答案 2 :(得分:0)
有没有这样的东西,希望它有用,我硬编码的值假设你从文本文件中获取值
package javaapplication14;
public class JavaApplication14 {
static int strt = 0;
static int end = 10;
public static void main(String[] args) {
String num = "3.14159265358979323846264338327950288419716939937510582097494459230781640628";
boolean val = false;
while (val == false) {
val = check(num.substring(strt, end));
strt = end;
end = end + 10;
}
}
private static boolean check(String substring) {
String num = substring;
//just for checking (the first ten digits of the string)
String chk = "3.14159265";
System.out.println("substr " + substring);
if (chk.equals(num)) {
System.out.println("equal");
return true;
} else {
return false;
}
}
}
答案 3 :(得分:0)
以下是一些可以帮助您入门的通用代码:
String text;
int index = 0;
String subText = text.substring(index, index+10);
while (method(subText) && ((index + 10) < text.length())) {
subText = text.substring(index, index + 10);
index += 10;
}
答案 4 :(得分:0)
使用Apache Commons IO:
import java.io.File;
import java.util.Arrays;
import org.apache.commons.io.FileUtils;
...
String fileContent = FileUtils.readFileToString(new File("pi.txt"));
String tenCharacters = Arrays.toString(fileContent.split("(?<=\\G..........)"));
doStuff(tenCharacters);
...
答案 5 :(得分:-1)
String text;
text = "3.14159265358979323846264338327950288419716939937510582097494459230781640628";
int index = 0;
while (index<text.length()) {
String string = text.substring(index, Math.min(index+10,text.length()));
//function to process 10 digits. if true break
if(processDigits(string))
break;
index+=10;
}