package shuzu1;import java.io.IOException;import java.io.InputStream;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import xuesheng.StuInform;public class Dui1 {
//选择功能,1为录入,2为查询,3为退出
//录入:输入姓名、学好,提示是否继续,并保存到一个动态的数组里
//查询,遍历对象数组
static List<StuInform> luru=new ArrayList<StuInform>();
public static void jiemian() throws IOException{
//定义一个字符数组接收123
//判断123不是则抱错,是则分别调用不同方法
System.out.println("按1为录入,按2为查询,按3为退出");
InputStream input=System.in;
int temp=0;
while((temp=input.read())!=-1){
char c=(char)temp;
if(c =='1'){
System.out.println("\n");
//inp.close();
luru();
}
else if(c=='2'){
System.out.println("\n");
inp.close();
chaxun();
}
else if(c=='3'){
System.out.println("\n");
inp.close();
tuichu();
}
else {
System.out.println("错误的指令,请重新输入");
jiemian();
}
}
}
public static void luru() throws IOException{
System.out.println("录入格式为:学生姓名+空格+学号+回车");
//创建一个新的学生对象
InputStream input=System.in;
StringBuffer buf=new StringBuffer();
//StringBuffer yn=new StringBuffer();
int num =1;
for (int i = 0; i < num; i++) {
int namelength = 0;
StuInform inform = new StuInform();
int temp=0;
while((temp=input.read())!=-1){
char c=(char) temp;
if(c==' '){
namelength=buf.length()-1;
inform.setXingming(buf.substring(0, namelength).toString());
//byte b[]=new byte[buf.length()-1];
//b=buf.substring(0, buf.length()-1);
}
if(c=='\n'){
inform.setXuehao(buf.substring(namelength +1, buf.length()-1).toString());
System.out.println("是否还要继续录入,是请按y,否请按n\n");
if(c=='y'){
buf.delete(0, buf.length());
num++;
break;
//再次
}
else if(c=='n'){
//返回界面
input.close();
jiemian();
}
else{
//
}
}
buf.append(c);
}
luru.add(inform);
}
}
public static void chaxun(){
}
public static void tuichu(){
int i=1;
Iterator itr = luru.iterator();
while (itr.hasNext()) {
StuInform nextObj = (StuInform)itr.next();
System.out.println("第"+i+"个学生的信息:\n");
System.out.println("姓名"+nextObj.getXingming()+"\n");
System.out.println("学号"+nextObj.getXuehao()+"\n");
}
}
public static void main (String[] args) throws IOException{
jiemian();
} }主方法先调用jiemian()界面,界面通过接收1、2、3来调用不同函数,按1进入luru()录入,然后进入for循环new一个StuInform,在输入流中判断空格和回车,空格前为学生姓名,空格后为学生学号,回车提示是否继续,按y则结束while循环,并删除buffer中的字符串,并在list类集添加一个StuInform对象并再次循环,若回车后按n关闭输入流返回界面目前编译通过但是执行不正常,不能按逾期的执行,总是说什么数组越界,我按1再按回车之后,eclipse把这个回车认为是在luru中输入的,导致数组越界以下是StuInform类
package xuesheng;public class StuInform {
private String xingming;
private String xuehao;
public String getXingming() {
return xingming;
}
public void setXingming(String xingming) {
this.xingming = xingming;
}
public String getXuehao() {
return xuehao;
}
public void setXuehao(String xuehao) {
this.xuehao = xuehao;
}
}
按1后程序进不了luru函数,必须回车才行,另外为什么我定义的输入流不在一个作用域还会互相影响呢
按照那个方法进入luru了,但是仍然有很大的问题,我定义的输入流不在一个作用域还会互相影响不知道高手能否给出修改以供参考