A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

问题描述:这段代码是我未完成的主文件,本人java初学者,实在无法解决,渴求帮助。
这段程序是为了记录Task这个class并保存在timetracker.data中。程序首先要读取文件中的内容,我根据ObjectInputStream函数,想将文件内的内容的全部作为一个ArrayList整体读取出来,然后再在用户输入1时使用add()直接将新的Task添加到ArrayList中,最后在用户输入5的时候将这个ArrayList作为一个整体保存进去。以此来实现Task这个class的存取。 目前来看我的问题出在TaskList = (ArrayList)ois.readObject();这一行。
编译时会警报 未经检查的类型使用,找到java.lang.Object 需要java.util.ArrayList
我的疑问是 到底能不能通过readObject将文件内的所有内容读出,还是只能读出一个然后我的程序强行将这个Object转化成了ArrayList形式。
如果能,希望可以教我一下我写法的缺陷。
很抱歉浪费大家时间,感激不尽
import java.io.*;
import java.text.*;
import java.util.*;
import java.lang.*;

public class TimeTracker
{

public static void main(String[] args)        throws IOException
{
byte[] option = new byte[100];

ArrayList<Task> TaskList = new ArrayList<Task>();
for(;;){        //nihao


ObjectInputStream ois = null;


try{
ois = new ObjectInputStream(new FileInputStream("timetracker.data"));
TaskList = (ArrayList<Task>)ois.readObject();

}  catch (ClassNotFoundException e){
System.out.println("(None)");
} catch (EOFException e){        // catch EOF
System.out.println("have reached the end of file");
}       

finally{
if( ois != null )
{
ois.close();
}
int n = TaskList.size();
System.out.println(n);

}



ManuPrint manu = new ManuPrint();
manu.Print();

int numRead = System.in.read(option);
if((char) option[0] == '1'||(char) option[0] == '2'||(char) option[0] == '3'||(char) option[0] == '4'||(char) option[0] == '5'){
if((char) option[0] == '1'){
System.out.println("Enter new task (blank line ends input, no text ends the current task):");
Date date = new Date();
SimpleDateFormat ft = new SimpleDateFormat("yyyy-MM-dd");
SimpleDateFormat dt = new SimpleDateFormat("HH:mm");
//------------------------------record the last finished task

//------------------------------record the last finished task
// still not sloved multi lines
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str = null;
str=br.readLine();       
// multi lines

Task a = new Task((ft.format(date)),(dt.format(date)),"","",str);




TaskList.add(a);




}        // option 1

if((char) option[0] == '5'){
FileOutputStream fout = new FileOutputStream("timetracker.data");
ObjectOutputStream out = new ObjectOutputStream(fout);
try{

out.writeObject(TaskList);
out.flush();
} catch(Exception e){
e.printStackTrace();
} finally{
try{
out.close();
} catch(Exception e){
e.printStackTrace();
}
}

System.out.print("******SEEEEEE UUUUU NEEEXT TIMEEE*********");
System.exit(0);
}        // option 5

}        // if=1,2,3,4,5
else{
System.out.println("Invalid option!");
continue;
}
}        //nihao
}        // main
}        //class问题描述:这段代码是我未完成的主文件,本人java初学者,实在无法解决,渴求帮助。
这段程序是为了记录Task这个class并保存在timetracker.data中。程序首先要读取文件中的内容,我根据ObjectInputStream函数,想将文件内的内容的全部作为一个ArrayList整体读取出来,然后再在用户输入1时使用add()直接将新的Task添加到ArrayList中,最后在用户输入5的时候将这个ArrayList作为一个整体保存进去。以此来实现Task这个class的存取。 目前来看我的问题出在TaskList = (ArrayList)ois.readObject();这一行。
编译时会警报 未经检查的类型使用,找到java.lang.Object 需要java.util.ArrayList
我的疑问是 到底能不能通过readObject将文件内的所有内容读出,还是只能读出一个然后我的程序强行将这个Object转化成了ArrayList形式。
如果能,希望可以教我一下我写法的缺陷。
很抱歉浪费大家时间,感激不尽
import java.io.*;
import java.text.*;
import java.util.*;
import java.lang.*;

public class TimeTracker
{

public static void main(String[] args)        throws IOException
{
byte[] option = new byte[100];

ArrayList<Task> TaskList = new ArrayList<Task>();
for(;;){        //nihao


ObjectInputStream ois = null;


try{
ois = new ObjectInputStream(new FileInputStream("timetracker.data"));
TaskList = (ArrayList<Task>)ois.readObject();

}  catch (ClassNotFoundException e){
System.out.println("(None)");
} catch (EOFException e){        // catch EOF
System.out.println("have reached the end of file");
}       

finally{
if( ois != null )
{
ois.close();
}
int n = TaskList.size();
System.out.println(n);

}



ManuPrint manu = new ManuPrint();
manu.Print();

int numRead = System.in.read(option);
if((char) option[0] == '1'||(char) option[0] == '2'||(char) option[0] == '3'||(char) option[0] == '4'||(char) option[0] == '5'){
if((char) option[0] == '1'){
System.out.println("Enter new task (blank line ends input, no text ends the current task):");
Date date = new Date();
SimpleDateFormat ft = new SimpleDateFormat("yyyy-MM-dd");
SimpleDateFormat dt = new SimpleDateFormat("HH:mm");
//------------------------------record the last finished task

//------------------------------record the last finished task
// still not sloved multi lines
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str = null;
str=br.readLine();       
// multi lines

Task a = new Task((ft.format(date)),(dt.format(date)),"","",str);




TaskList.add(a);




}        // option 1

if((char) option[0] == '5'){
FileOutputStream fout = new FileOutputStream("timetracker.data");
ObjectOutputStream out = new ObjectOutputStream(fout);
try{

out.writeObject(TaskList);
out.flush();
} catch(Exception e){
e.printStackTrace();
} finally{
try{
out.close();
} catch(Exception e){
e.printStackTrace();
}
}

System.out.print("******SEEEEEE UUUUU NEEEXT TIMEEE*********");
System.exit(0);
}        // option 5

}        // if=1,2,3,4,5
else{
System.out.println("Invalid option!");
continue;
}
}        //nihao
}        // main
}        //class

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马