一个简单的键盘输入的java小例子 求高手指点 20分赠送
package com;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class ClassManger {
public void classEdit(){
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
try{
if(br.readLine().equals( "0 ")){
ClassTeam classTeam=new ClassTeam();
System.out.println( "请输入班级号: ");
classTeam.setId(br.read());
System.out.println( "请输入班级名称: ");
classTeam.setClassName(br.readLine());
classTeam.info();
}
}catch(IOException e){
e.printStackTrace();
}
}
public static void main(String[] args) {
Menu helpMenu=new Menu();
ClassManger classManger=new ClassManger();
java.io.InputStream s=System.in;
helpMenu.help_Menu();
BufferedReader br1
= new BufferedReader(new InputStreamReader(s));
String str1=null;
try{
str1=br1.readLine();
System.out.println( "str1= "+str1);
}catch(IOException e){
e.printStackTrace();
}
Menu menu1=new Menu();
if(str1.equals( "0 ")){
menu1.help_Menu();
}else if(str1.equals( "1 ")){
menu1.setClass_Menu();
classManger.classEdit();
}else if(str1.equals( "2 ")){
menu1.setPTTeacher_Menu();
}else if(str1.equals( "3 ")){
menu1.setFTTeacher_Menu();
}
}
}
package com;
public class ClassTeam {
private int id;
private String className;
public ClassTeam(){
}
public ClassTeam(int id,String className){
this.id=id;
this.className=className;
}
public void info(){
System.out.println( "班级号: "+this.id);
System.out.println( "班级名称: "+this.className);
}
public String getClassName() {
return className;
}
public void setClassName(String className) {
this.className = className;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
}
package com;
public class Menu {
public void help_Menu(){
System.out.println( "*************显示帮助************* ");
System.out.println( "0---------------------显示帮助 ");
System.out.println( "1---------------------设置班级 ");
System.out.println( "2---------------------设置兼职老师 ");
System.out.println( "3---------------------设置专职老师 ");
System.out.println( "4---------------------设置学员 ");
System.out.println( "5---------------------设置课程 ");
System.out.println( "6---------------------设置教师 ");
System.out.println( "7---------------------自我设置 ");
System.out.println( "8---------------------显示信息 ");
System.out.println( "9---------------------推出系统 ");
System.out.println( "*************输入数字************* ");
}
public void setClass_Menu(){
System.out.println( "0---------------------添加班级 ");
System.out.println( "1---------------------删除班级 ");
System.out.println( "2---------------------返回帮助 ");
}
public void setPTTeacher_Menu(){
System.out.println( "0-------------------添加兼职老师 ");
System.out.println( "1-------------------删除兼职老师 ");
System.out.println( "2-------------------返回帮助 ");
}
public void setFTTeacher_Menu(){
System.out.println( "0-------------------添加全职老师 ");
System.out.println( "1-------------------删除全职老师 ");
System.out.println( "2-------------------返回帮助 ");
}
public void setCourses_Menu(){
System.out.println( "0---------------------添加课程 ");
System.out.println( "1---------------------删除课程 ");
System.out.println( "2---------------------返回帮助 ");
}
}
这里是三个类 主要是第一个 执行main函数 我想在键盘输入数字进行选择可是 问什么取不到数据呢? 出现io异常错误!求高手指点 20分赠送
[解决办法]
看了一下你的代码,你的代码应该能够顺利编译,不过它肯定不能实现你想要的效果。请看你的main方法,读取一个输入,然后转到相应的菜单,那么然后呢?你Menu这个类里的所有方法都只负责显示菜单,显示完了就结束了,没有下文……
类似的程序以前我也做过,那时候还不会做界面只好在控制台上输入数字来发送指令。给你一个建议,写一个小的静态方法,用它来读取键盘的输入,你不妨把它命名为readKey()。另外,建议你Menu也作为一个工具类,里面所有方法都变成静态的。像你main方法里Menu menu1=new Menu()这样的写法是甚么意思呢?你还准备创造menu2、menu3之类的对象吗?一个程序应该只有一套菜单系统,所以适合用静态方法,不创建对象,直接Menu.help_Menu()就可以了。
另外,Menu类的各个方法太单薄了,只管显示菜单的话其实没有太大用处。我建议你在每个方法里加入一段内容:在显示完菜单内容之后,调用刚才说的readKey()方法,读取用户输入。然后根据用户的输入,转入相应的菜单,或者调用相应的方法。这样你的Menu类才活了起来,能够在菜单之间灵活进出,并且才真正接收了用户发出的指令。
以上是我写类似程序的一点点心得体会,希望对你有帮助。
[解决办法]
楼上说的很有道理。
总的来说,lz没有设计好menu类,menu类只负责显示菜单是不够的。
也可以根据mvc的原则来进行设计,增加一个控制类,负责读取控制台输入,并转发。
增加一个处理类,负责业务处理,扩充现有的menu类。