Java 读取文本文件中的下一行
我正在尝试从文本文件中读取输入,该文本文件的格式如下:Java 读取文本文件中的下一行,java,loops,text,input,Java,Loops,Text,Input,我正在尝试从文本文件中读取输入,该文本文件的格式如下: 2 80 97 5 69 79 89 99 58 7 60 70 80 90 100 0 59 每行的第一个数字是每个“区段”的“等级”数 我让我的程序读一节,但我不知道如何让它读有多少节,然后再读下一行 我想我可以把我当前的代码放在一个计数控制的循环中,这个循环将首先读取有多少节,然后运行那么多次。我只是不知道如何将这个想法转化为代码 以下是Revavent代码部分: public static void main(String a
2 80 97
5 69 79 89 99 58
7 60 70 80 90 100 0 59
每行的第一个数字是每个“区段”的“等级”数
我让我的程序读一节,但我不知道如何让它读有多少节,然后再读下一行
我想我可以把我当前的代码放在一个计数控制的循环中,这个循环将首先读取有多少节,然后运行那么多次。我只是不知道如何将这个想法转化为代码
以下是Revavent代码部分:
public static void main(String args[]) throws Exception
{
Scanner in = new Scanner(new File("prog2test.txt"));
//int sections = (in.nextInt());
int scores = (in.nextInt());
int scoresForAverage = scores;
int scoreTotals = 0;
double average = 0;
int A = 0;
int B = 0;
int C = 0;
int D = 0;
int F = 0;
int highest = 0;
int lowest = 100;
while (scores > 0 && in.hasNextInt())
{
int grade = in.nextInt();
if (grade >= 90)
A++;
else if (grade >= 80)
B++;
else if (grade >= 70)
C++;
else if (grade >= 60)
D++;
else
F++;
if (grade > highest)
highest = grade;
if (grade < lowest)
lowest = grade;
scores--;
scoreTotals = (scoreTotals + grade);
}
average = scoreTotals/scoresForAverage;
System.out.println("Scores for section 1");
System.out.println("A's: " + A);
System.out.println("B's: " + B);
System.out.println("C's: " + C);
System.out.println("D's: " + D);
System.out.println("F's: " + F);
System.out.println("Lowest score: " + lowest);
System.out.println("Highest score: " + highest);
System.out.println("Average: " + average);
publicstaticvoidmain(字符串args[])引发异常
{
扫描仪输入=新扫描仪(新文件(“prog2test.txt”);
//int sections=(in.nextInt());
整数分数=(in.nextInt());
int SCORESOFTRAVERAGE=分数;
积分总数=0;
双平均=0;
int A=0;
int B=0;
int C=0;
int D=0;
int F=0;
int最高=0;
int最低=100;
while(分数>0&&in.hasnetint())
{
int grade=in.nextInt();
如果(等级>=90)
A++;
否则,如果(等级>=80)
B++;
否则,如果(等级>=70)
C++;
否则,如果(等级>=60)
D++;
其他的
F++;
如果(等级>最高)
最高=等级;
if(等级<最低)
最低=等级;
分数--;
分数总计=(分数总计+分数);
}
平均值=总分/分数旅行;
System.out.println(“第1节分数”);
System.out.println(“A's:+A”);
System.out.println(“B's:+B”);
System.out.println(“C's:+C”);
System.out.println(“D's:+D”);
System.out.println(“F's:+F”);
System.out.println(“最低分:+最低分”);
System.out.println(“最高分数:+最高分”);
System.out.println(“平均值:+平均值”);
编辑:使用complete方法更新。如果您使用的是Scanner,则可以使用hasNext()方法
只要文本中有任何字符串被空格分隔,这将是正确的。您可以读取整行内容,然后使用
String.split
方法使用空格分隔符将其拆分为数组
读完这一行后:
String grades[] = line.split(" ");
然后您就可以使用for
循环了
for(int i=1; i<grades.length; ++i) {
//start an index 1 to skip the non-grade first number on line
int grade = parseInt(grades[i]);
if (grade >= 90)
A++;
//etc on down the line
}
for(int i=1;i=90)
A++;
//等等
}
并在
while
循环中包含整个过程,以迭代每一行。因为您知道每一行中的第一个int不是一个等级,所以可以使用someString=in.nextLine()
保存每一行,而in.hasNextLine()保存每一行
然后使用新的扫描器
实例对每个保存的字符串进行迭代,跳过每行的第一个整数。是否使用扫描器?谢谢。我想我必须把我的许多变量放在while循环中,这样它们就可以为每个新的部分重置。我用完整的方法更新了我的帖子。问题是你无法分辨什么是分数,每个部分的分数是多少。这是不分青红皂白的,因为你不知道什么时候换行。我试过了,并且成功了。非常感谢你!我必须将所有变量移到内部循环中,并在外部循环之外创建一个新的“部分”变量,以防任何阅读本文的人感到好奇。