Java实验展示系统
要求以命令行的形式或图形的方式或界面的方式展示所有Java实验做的题目和运行结果。
改展示系统主要有下面的功能:
1、增加java实验的题目
2、修改题目
3、删除题目
4、为每个实验添加完成的程序
5、为每个实验添加完成的程序的运行结果
6、删除已提交的程序,删除已提交的结果
展示系统退出后提交的程序和结果保存在文件或数据库中。
在arraylist动态数组中删除特定元素,但是总是出现下面这个问题,不知道为什么,可以帮忙看看嘛,谢谢啦
System.java
package ShowSystem;
import java.io.*;
import java.util.ArrayList;
import java.util.InputMismatchException;
import java.util.Scanner;
public class System {
public static int a;
public static void main(String[] args) throws IOException {
ArrayList<Problem> arrayList = new ArrayList<>();
java.lang.System.out.println("------------------欢迎进入Java实验展示系统------------------");
while (true) {
java.lang.System.out.println("********************************************************");
java.lang.System.out.println("| 1.添加题目 |");
java.lang.System.out.println("| 2.删除题目 |");
java.lang.System.out.println("| 3.修改题目 |");
java.lang.System.out.println("| 4.提交结果 |");
java.lang.System.out.println("| 5.展示程序 |");
java.lang.System.out.println("| 6.退出 |");
java.lang.System.out.println("**********************请输入您的选择***********************");
Scanner sc = new Scanner(java.lang.System.in);
File file = new File("Problems.txt");
try {
a = sc.nextInt();
switch (a) {
case 1: {
AddProblem(arrayList);
break;
}
case 2: {
DelProblem(arrayList);
break;
}
case 3: {
UpdateProblem(arrayList);
break;
}
case 4: {
SubmitProgram(file,arrayList);
break;
}
case 5: {
ShowProgram(file);
break;
}
case 6: {
java.lang.System.out.println("感谢您的使用!");
java.lang.System.exit(0);
}
default: {
java.lang.System.out.println("请输入1-6的数字!");
break;
}
}
} catch (InputMismatchException e) {
java.lang.System.out.println("请输入正确的数字!");
}
}
}
//增加题目
public static void AddProblem(ArrayList<Problem> arrayList){
Scanner sc=new Scanner(java.lang.System.in);
String num;
while (true){
java.lang.System.out.println("请输入您要添加的题目序号:");
num=sc.nextLine();
boolean flag=check(arrayList,num);
if(flag){
java.lang.System.out.println("该题号已存在,请重新输入!");
}else{
break;
}
}
java.lang.System.out.println("请输入题目:");
String problem=sc.nextLine();
java.lang.System.out.println("请输入运行程序:");
String program=sc.nextLine();
java.lang.System.out.println("请输入运行结果:");
String result=sc.nextLine();
Problem pro=new Problem();
pro.setProblem(problem);
pro.setProgram(program);
pro.setResult(result);
arrayList.add(pro);
java.lang.System.out.println("添加题目成功!");
}
//序号查重
public static boolean check(ArrayList<Problem> arrayList, String num){
boolean flag=false;
for (Problem pro : arrayList) {
if (pro.getProblem().equals(num)) {
flag = true;
break;
}
}
return flag;
}
//删除题目
public static void DelProblem(ArrayList<Problem> arrayList){
Scanner sc=new Scanner(java.lang.System.in);
java.lang.System.out.println("请输入要删除的题目序号:");
String num=sc.nextLine();
int index=-1;
for(int i=0;i<arrayList.size();i++){
Problem pro=arrayList.get(i);
if(pro.getNum().equals(num)){
index=i;
break;
}
}
if(index==-1){
java.lang.System.out.println("该题号不存在,请先添加题目!");
}
else {
arrayList.remove(index);
java.lang.System.out.println("删除题目成功!");
}
}
//更改题目
public static void UpdateProblem(ArrayList<Problem> arrayList){
Scanner sc=new Scanner(java.lang.System.in);
java.lang.System.out.println("请输入需要修改的题目题号:");
String num=sc.nextLine();
int temp=-1;
for(int i=0;i<arrayList.size();i++){
Problem pro=arrayList.get(i);
if(pro.getNum().equals(num)){
temp=i;
break;
}
}
if(temp==-1){
java.lang.System.out.println("该题号不存在,请重新添加学生信息");
AddProblem(arrayList);
}else {
java.lang.System.out.println("请输入新的题目:");
String problem = sc.nextLine();
java.lang.System.out.println("请输入新的程序:");
String program = sc.nextLine();
java.lang.System.out.println("请输入新的运行结果:");
String result=sc.nextLine();
Problem pro=new Problem();
pro.setNum(num);
pro.setProblem(problem);
pro.setProgram(program);
pro.setResult(result);
arrayList.set(temp,pro);
java.lang.System.out.println("修改题目成功!");
}
}
//提交程序
public static void SubmitProgram(File file, ArrayList<Problem> arrayList) throws IOException {
FileWriter fw=new FileWriter(file,true);
BufferedWriter bw=new BufferedWriter(fw);
for (Problem value : arrayList) {
bw.newLine();
String problem = value.getProblem();
bw.write("题目:"+problem);//写入题目
bw.newLine();
String program = value.getProgram();
bw.write("程序:" + program);//写入程序
bw.newLine();
String result = value.getResult();
bw.write("运行结果:" + result);//写入运行结果
bw.newLine();
}
bw.flush();
fw.close();
java.lang.System.out.println("提交程序成功!");
}
//展示程序
public static void ShowProgram(File file) throws IOException {
try {
FileReader fr = new FileReader(file);
BufferedReader br = new BufferedReader(fr);
String pro;
while ((pro = br.readLine()) != null) {
java.lang.System.out.println(pro);
java.lang.System.out.println();
}
br.close();
fr.close();
}catch (FileNotFoundException e){
java.lang.System.out.println("找不到题目!");
}
}
}
Problem.java
package ShowSystem;
public class Problem {
private String num;//题目序号
private String problem;//题目
private String program;//程序
private String result;//运行结果
public Problem(){
}
public Problem(String num,String problem,String program,String result){
this.num=num;
this.problem=problem;
this.program=program;
this.result=result;
}
public String getNum(){
return num;
}
public void setNum(String num){
this.num=num;
}
public String getProblem(){
return problem;
}
public void setProblem(String problem){
this.problem=problem;
}
public String getProgram(){
return program;
}
public void setProgram(String program){
this.program=program;
}
public String getResult(){
return result;
}
public void setResult(String result){
this.result=result;
}
}
简单分析这个报错,空指针异常,看代码 要么是pro 是null ,要么是 pro.getNum() 是null
这种时候,建议 这样判断 null != pro && null != pro.getNum() && pro.getNum().equals(num)
你的 num压根就没有塞值