Java 解析文件输入中的数字
我正在使用Scanner方法尝试获取文件输入。问题是我只得到名字和姓氏后面的第一个int。以下是文本文件:Java 解析文件输入中的数字,java,file,input,Java,File,Input,我正在使用Scanner方法尝试获取文件输入。问题是我只得到名字和姓氏后面的第一个int。以下是文本文件: John Doe 12 6 8 15 35 16 17 4 12 54 Mark Doe 16 67 8 12 35 19 78 3 12 101 Johnnie Smarts 20 10 10 20 40 100 20 10 20 100 Frank Noshow Molly Guess 2 5 6 7 2 4 7 8 9 10 到目前为止,我已经完成了很多代码: import jav
John Doe 12 6 8 15 35 16 17 4 12 54
Mark Doe 16 67 8 12 35 19 78 3 12 101
Johnnie Smarts 20 10 10 20 40 100 20 10 20 100
Frank Noshow
Molly Guess 2 5 6 7 2 4 7 8 9 10
到目前为止,我已经完成了很多代码:
import java.io.*;
import java.util.*;
import static java.lang.Math.*;
import static java.lang.System.out;
public class StudentTester
{
public static void main ( String[] args ) throws IOException
{
Scanner kb = new Scanner(System.in);
System.out.println("\tWelcome.. " );
System.out.println(" Please enter the file name. " );
String filename = kb.nextLine();
Scanner fileReader = new Scanner(new File(filename));
//created a scanner object with a file object.
//Creat a String array to hold each lince of the file.
String [] s = new String [10000]; //prepared for a 100 lines of text.
int linesOfText = -1;
int score[] = new int[10];
while (fileReader.hasNextLine())//while the file has any lines.
{
linesOfText++;
s[linesOfText] = fileReader.nextLine();
//This places the first line of the file in the s array.
//System.out.println(s[linesOfText]);//for testing purposes..
}
fileReader.close();//close the Scanner.
for(int i=0;i<=linesOfText;i++){
Scanner sc = new Scanner(s[i]);
String fN = sc.next();
String lN = sc.next();
if(sc.hasNext()){
score[i] = sc.nextInt();
}
else {
System.out.println(" opps, there is no score here... ");
}
Student stu = new Student(fN,lN,score);
System.out.println(score[i]);
}
}
}
那是因为你先做下一步,然后再做下一步,然后再做下一步
替换
if (sc.hasNext()) {...}
与
您如何期望它读取多个值?您只需下一次,并根据您所在的记录(而不是某个特定的学生)填充分数[i]。我建议将代码提取出来,将单个学生的数据读入一个单独的方法中——这会使它简单得多。我用while替换了它,但它似乎仍然不起作用,它打印出第一个数字,然后转到下一行。
while (sc.hasNext()) {...}
I think the following code can help you for your request :
package com.mongolhun.tech.basic.miscellaneous;
import java.io.File;
import java.io.IOException;
import java.util.Scanner;
public class StudentTester
{
public static void main ( String[] args ) throws IOException
{
Scanner kb = new Scanner(System.in);
System.out.println("/tWelcome.. " );
System.out.println(" Please enter the file name. " );
String filename = kb.nextLine();
Scanner fileReader = new Scanner(new File("D:/workspace/test/src/test/java/com/yxyy/tech/basic/miscellaneous/" +filename));
//created a scanner object with a file object.
//Creat a String array to hold each lince of the file.
String [] s = new String [10000]; //prepared for a 100 lines of text.
int linesOfText = -1;
int score[] = new int[10];
while (fileReader.hasNextLine())//while the file has any lines.
{
linesOfText++;
s[linesOfText] = fileReader.nextLine();
//This places the first line of the file in the s array.
//System.out.println(s[linesOfText]);//for testing purposes..
}
fileReader.close();//close the Scanner.
for(int i=0;i<=linesOfText;i++){
Scanner sc = new Scanner(s[i]);
String fN = sc.next();
String lN = sc.next();
int a = 0;
while(sc.hasNext()){
score[i] = sc.nextInt();
System.out.print(score[i] + " ");
a = 1;
}
if (a == 0) {
System.out.print("opps, there is no score here... ");
}
System.out.println();
// Student stu = new Student(fN,lN,score);
}
}
}