Наше задание - извлечь файл, классифицировать его и отобразить в другом файле. Фамилия, имя, затем класс.
У меня проблемы с запуском цикла из-за ошибки
"java.util.NoSuchElementException"
Это происходит только тогда, когда я меняю существующее в настоящий момент время, пока у меня есть цикл У меня также есть проблема отображения результата. Результат, который я показываю, находится в одной строке, чего я не могу допустить. Вот мой код:
import java.util.*;
import java.util.StringTokenizer;
import java.io.*;
import javax.swing.*;
import java.text.DecimalFormat;
class Grade
{
public static void main(String [] args)throws IOException
{
//declaring
String line = "";
StringTokenizer st;
String delim = " \t\n\r,-";
String token;
String firstname;
String lastname;
String grade;
String S69andbelow="Students with 69 or below\n";
String S70to79 ="Students with 70 to 79\n";
String S80to89= "Students with 80 to 89\n";
String S90to100= "Students with 90 to 100\n";
int gradeint;
double gradeavg = 0;
int count = 0;
File inputFile = new File("input.txt");
File outputFile = new File("output.txt");
FileInputStream finput = new FileInputStream(inputFile);
FileOutputStream foutput = new FileOutputStream(outputFile);
FileReader reader = new FileReader(inputFile);
BufferedReader in = new BufferedReader(reader);
Scanner std = new Scanner(new File("input.txt"));
Scanner scanner = new Scanner(inputFile);
BufferedWriter out = new BufferedWriter(new FileWriter(outputFile));
Scanner scan = new Scanner(S69andbelow);
//reading linev
line = scanner.nextLine();
st = new StringTokenizer(line, delim);
//avoiding selected characters
try
{
while(st.hasMoreTokens())
{
firstname = st.nextToken(); //<----error started to happen
lastname = st.nextToken(); //here
grade = st.nextToken(); //and here
//storing tokens into their properties
gradeint = Integer.parseInt(grade);
//converting token to int
gradeavg = gradeavg + gradeint;
//calculating avg
count++;
//recording number of entries
if (gradeint <=69)
{
S69andbelow = S69andbelow + lastname + " "
+ firstname + " " + "\t" + grade + "\n";
} // saving data by grades
else if (gradeint >= 70 && gradeint <= 79)
{
S70to79 = S70to79 + lastname + " " + firstname
+ " " + "\t" + grade + "\n";
} // saving data by grades
else if (gradeint >= 80 && gradeint <=89)
{
S80to89 = S80to89 + lastname + " " + firstname
+ " " + "\t" + grade + "\n";
} // saving data by grades
else
{
S90to100 = S90to100 + lastname + " " + firstname
+ " " + "\t" + grade + "\n";
} // saving data by grades
}//end while
System.out.println(S69andbelow + "\n" + S70to79 + "\n"
+ S80to89 + "\n" + S90to100);
//caterorizing the grades
gradeavg = gradeavg / count;
//calculating average
DecimalFormat df = new DecimalFormat("#0.00");
out.write("The average grade is: "
+ df.format(gradeavg));
System.out.println("The average grade is: "
+ df.format(gradeavg));
Writer output = null;
output = new BufferedWriter(new FileWriter(outputFile));
// scanner.nextLine(S69andbelow);
//output.write(S69andbelow + "\n" + S70to79 + "\n"
// + S80to89 + "\n" + S90to100);
// output.close();
}
catch( Exception e )
{
System.out.println(e.toString() );
}
// Close the stream
try
{
if(std != null )
std.close( );
}
catch( Exception e )
{
System.out.println(e.toString());
}
}
}
На вопрос дан ответ. Последние штрихи как представлены:
/ *******************
Название программы: класс
Имя: Деннис Лян
Дата исполнения: 31.03.11
Описание программы: написать программу
который читает из файла список
студенты с их оценкой. Также дисплей
фамилия, имя, затем класс.
******************** /
import java.util. ;
import java.util.StringTokenizer;
импорт java.io. ;
импорт javax.swing. *;
import java.text.DecimalFormat;
класс
{
public static void main (String [] args) выдает IOException
{
//declaring
String delim = " \t\n\r,-";
String token;
String firstName;
String lastName;
String grade;
String S69andbelow="Students with 69 or below\n";
String S70to79 ="Students with 70 to 79\n";
String S80to89= "Students with 80 to 89\n";
String S90to100= "Students with 90 to 100\n";
String all;
int gradeint;
double gradeavg = 0;
int count = 0;
int countTwo = 0;
File inputFile = new File("input.txt");
File outputFile = new File("output.txt");
FileInputStream finput = new FileInputStream(inputFile);
FileOutputStream foutput = new FileOutputStream(outputFile);
FileReader reader = new FileReader(inputFile);
BufferedReader in = new BufferedReader(reader);
Scanner std = new Scanner(new File("input.txt"));
Scanner scanner = new Scanner(inputFile);
BufferedWriter out = new BufferedWriter(new FileWriter(outputFile));
Scanner scan = new Scanner(S69andbelow);
try
{
String line, newLine = (String)System.getProperty("line.separator");
//seperating lines
while((line = in.readLine()) != null){
//Will only work if the file is properly formatted
StringTokenizer st = new StringTokenizer(line, " ");
if (st.countTokens() == 3)
{
firstName = st.nextToken();
lastName = st.nextToken();
grade = st.nextToken();
gradeint = Integer.parseInt(grade);
//retrieving tokens
gradeavg = gradeavg + gradeint;
//formula for avg
count++;
//avg count
//organizing by grades
if (gradeint <=69)
{
S69andbelow = S69andbelow + newLine+ lastName + " "
+ firstName + " " + "\t" + grade + newLine;
}
else if (gradeint >= 70 && gradeint <= 79)
{
S70to79 = S70to79 +newLine+ lastName + " " + firstName
+ " " + "\t" + grade + newLine;
}
else if (gradeint >= 80 && gradeint <=89)
{
S80to89 = S80to89 + newLine+ lastName + " " + firstName
+ " " + "\t" + grade + newLine;
}
else
{
S90to100 = S90to100 + newLine+ lastName + " " + firstName
+ " " + "\t" + grade + newLine;
}
}
еще {
countTwo ++;
System.out.println («Есть» + countTwo + «человек / люди» +
"которые требуют дополнительной информации" + "\ n");
} // информирование пользователя о том, сколько людей с
} // отсутствует информация или слишком много.
System.out.println(S69andbelow + "\n" + S70to79 + "\n"
+ S80to89 + "\n" + S90to100);
//caterorizing the grades
gradeavg = gradeavg / count;
//calculating average
DecimalFormat df = new DecimalFormat("#0.00");
//formating
System.out.println("The average grade is: "
+ df.format(gradeavg));
//displaying
Writer output = null;
output = new BufferedWriter(new FileWriter(outputFile));
//make file
output.write(newLine + S69andbelow + newLine + S70to79 + newLine
+ S80to89 + newLine + S90to100);
output.write("The average grade is: "
+ df.format(gradeavg));
//outputing to file
output.close();
//saving
}
поймать (исключение е)
{
System.out.println (e.toString ());
}
// Закрыть поток
пытаться
{
if (std! = null)
std.close ();
}
catch( Exception e )
{
System.out.println(e.toString());
}
}
}