我有一个java问题。我试图读取一个txt文件,每行有一个可变数目的整数,对于每一行,我需要每隔一个整数求和!我正在使用扫描仪读取整数,但在完成一行时无法解决问题。有人可以帮忙吗?
答案 0 :(得分:2)
查看用于阅读文本文件的BufferedReader类和用于将每行拆分为字符串的StringTokenizer类。
String input;
BufferedReader br = new BufferedReader(new FileReader("foo.txt"));
while ((input = br.readLine()) != null) {
input = input.trim();
StringTokenizer str = new StringTokenizer(input);
String text = str.nextToken(); //get your integers from this string
}
答案 1 :(得分:0)
如果我是你,我可能会使用FileUtils中的Apache Commons IO课程。方法readLines(File file)
返回一个字符串列表,每行一个。然后你可以一次只处理一行。
这样的事情:
File file = new File("test.txt");
List<String> lines = FileUtils.readLines(file);
for (String line : lines) {
// handle one line
}
(不幸的是,Commons IO不支持泛型,因此在分配List&lt; String&gt;时会有一个未经检查的赋值警告。要使用@SuppressWarnings或只是一个无类型的List并转换为字符串来补救它。)子>
这可能是一个例子,可以应用“know and use the libraries”并完全跳过编写一些较低级别的样板代码。
答案 2 :(得分:0)
或从公共场所汲取必需品,以便学习好技术并跳过罐子:
import java.io.*;
import java.util.*;
class Test
{
public static void main(final String[] args)
{
File file = new File("Test.java");
BufferedReader buffreader = null;
String line = "";
ArrayList<String> list = new ArrayList<String>();
try
{
buffreader = new BufferedReader( new FileReader(file) );
line = buffreader.readLine();
while (line != null)
{
line = buffreader.readLine();
//do something with line or:
list.add(line);
}
} catch (IOException ioe)
{
// ignore
} finally
{
try
{
if (buffreader != null)
{
buffreader.close();
}
} catch (IOException ioe)
{
// ignore
}
}
//do something with list
for (String text : list)
{
// handle one line
System.out.println(text);
}
}
}
答案 3 :(得分:0)
这是我将使用的解决方案。
import java.util.ArrayList;
import java.util.Scanner;
public class Solution1 {
public static void main(String[] args) throws IOException{
String nameFile;
File file;
Scanner keyboard = new Scanner(System.in);
int total = 0;
System.out.println("What is the name of the file");
nameFile = keyboard.nextLine();
file = new File(nameFile);
if(!file.exists()){
System.out.println("File does not exit");
System.exit(0);
}
Scanner reader = new Scanner(file);
while(reader.hasNext()){
String fileData = reader.nextLine();
for(int i = 0; i < fileData.length(); i++){
if(Character.isDigit(fileData.charAt(i))){
total = total + Integer.parseInt(fileData.charAt(i)+"");
}
}
System.out.println(total + " \n");
}
}
}