저는 학교 프로젝트의 초기 단계에 있으며 이미 버그가 있습니다. While 루프를 사용하지 않고 for 루프를 사용하여 배열 목록 내용을 내보내는 경우 모든 항목이 올바르게 작동하지만 while 루프를 사용하여 옵션을 제공 할 수있는 경우 출력 텍스트 파일에 프로그램이 단순히 포함되어 있지 않은 것처럼 아무것도하지 않고 빈 텍스트 파일을 만듭니다. 나 엄청 혼란스러워.while 루프를 추가 한 후 Printwriter가 지정된 파일로 출력되지 않는 것 같습니다.
import java.io.File;
import java.io.FileNotFoundException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Scanner;
import java.io.PrintStream;
import javax.swing.JOptionPane;
import java.util.Arrays;
public class studentProcessor
{
public static void main(String[] args) throws FileNotFoundException
{
PrintStream pr=System.out;
String inputFileName = JOptionPane.showInputDialog("Input file:");
String outputFileName = JOptionPane.showInputDialog("Output file:");
File inputFile = new File(inputFileName);
Scanner in = new Scanner(inputFile);
PrintWriter out = new PrintWriter(outputFileName);
ArrayList<Student>student = new ArrayList<Student>();
while (in.hasNextLine())
{
student.add(new Student(in.nextInt(), in.next(), in.nextDouble()));
}
in.close();
boolean done=false;
while (!done)
{
String m=JOptionPane.showInputDialog("Please enter the number for the action which you would like to perform." +
"\n1. Add new student(s)\n2. Remove student(s)\n3. Update student's data\n4. Search for student" +
"\n5. Sort students\n6. Create GPA report\n7. Output information to a .txt file\n0. Exit");
if (m.equals("1"))
{
JOptionPane.showMessageDialog(null, "Add new student(s)");
}
else if (m.equals("2"))
{
JOptionPane.showMessageDialog(null, "Remove student(s)");
}
else if (m.equals("3"))
{
JOptionPane.showMessageDialog(null, "Update student's data");
}
else if (m.equals("4"))
{
JOptionPane.showMessageDialog(null, "Search for a student");
}
else if (m.equals("5"))
{
JOptionPane.showMessageDialog(null, "Sort students");
}
else if (m.equals("6"))
{
JOptionPane.showMessageDialog(null, "Create GPA report");
}
else if (m.equals("7"))
{
JOptionPane.showMessageDialog(null, "Output information to a .txt file");
out.println("The students' information is listed below:");
for (Student Stu:student)
{
out.println(Stu.getId()+" "+Stu.getLName()+" "+Stu.getGpa());
}
}
else if (m.equals("0"))
{
System.exit(0);
done=true;
}
else
{
JOptionPane.showMessageDialog(null, "You have not entered a valid command, try again.");
}
}
out.close();
}
}
여기에 제가 사용하는 학생 수업이 있습니다. 어떤 도움
class Student
{
private int id;
private String lName;
private double gpa;
public Student (int studentId, String studentLName, double studentGpa)
{
id=studentId;
lName=studentLName;
gpa=studentGpa;
}
public int getId()
{ return id; }
public String getLName()
{ return lName; }
public double getGpa()
{ return gpa; }
public void setId(int id)
{ this.id=id; }
public void setLName(String lName)
{ this.lName=lName; }
public void setGpa(double gpa)
{ this.gpa=gpa; }
}
감사 =]
편집 :이 지금의 PrintWriter와 함께 작동 코드의 새로운 섹션입니다. 모든 도움을 주셔서 감사합니다!
else if (m.equals("7"))
{
String outputFileName = JOptionPane.showInputDialog("Designate an output file for student information:");
PrintWriter out = new PrintWriter(outputFileName);
out.println("The students are listed below:");
for (Student Stu:student)
{
out.println(Stu.getId()+" "+Stu.getLName()+" "+Stu.getGpa());
}
out.close();
}
왜 System.exit (0)을 가지고 있습니까? done을 false로 설정하면 프로그램이 종료되고 outfile을 적절하게 닫을 수 있습니다. –