当前位置:编程学习 > JAVA >>

程序单独测试没有问题,一放在一块就出错。求帮助。

题目要求是实现一个迷你的DVD管理器;
我的程序如下:


import java.util.Scanner;

public class Test {
public static void main(String [] args){
Scanner input = new Scanner(System.in);
/*
 * 借出状态、名称、日期、借出次数
 */
int index = -1;
boolean [] status = new boolean [7];//借出状态
String [] names = new String [7];//名称
int [] data = new int [7];//日期
int [] account = new int [7];//次数

status [0] = false;
names [0] = "罗马假日";
data [0] = 1;
account [0] = 15;

status [1] = false;
names [1] = "风声鹤唳";
data [1] = 0;
account [1] = 12;

status [2] = false;
names [2] = "浪漫满屋";
data [2] = 0;
account [2] = 30;
String name;
int time;
boolean isOK;
boolean exit = false;
boolean isZero;
do{
System.out.println("欢迎使用迷你DVD管理器");
System.out.println("---------------------------------");
System.out.println("1.新增DVD");
System.out.println("2.查看DVD");
System.out.println("3.删除DVD");
System.out.println("4.借出DVD");
System.out.println("5.归还DVD");
System.out.println("6.退出DVD");
System.out.println("---------------------------------");
System.out.print("请选择:");
int choose = input.nextInt();
switch(choose){
case 1:
System.out.println("--->新增DVD");
for(int i = 0;i<names.length;i++){
if(names [i] ==null){
index = i;
break;
}
}
if(index!=-1){
System.out.print("请输入DVD名称:");
names [index] = input.next();
System.out.println("新增《"+names[index]+"》成功!");
}
break;
case 2:
System.out.println("--->查看DVD");
System.out.println("序号\t状态\t名称\t\t借出日期\t借出次数");
for(int i = 0;i<names.length;i++){
if(names [i] ==null){
index = i;
break;
}
}
for(int i=0;i<index;i++){
String x;
if(status[i] == true){
x = "已借出";
}else{
x = "可借";
}
System.out.println((i+1)+"\t"+x+"\t《"+names[i]+"》\t"+data [i]+"日"+"\t"+account [i]+"次");
}
break;
case 3:
System.out.println("--->删除DVD");
System.out.println("请输入DVD名称:");
name = input.next();
for(int i = 0;i<names.length;i++){
if(names [i] ==null){
index = i;
break;
}
}
for(int i = 0; i<index;i++){
if(name.equals(names [i])){
names [i] = names[i+1];
status [i] = status [i+1];
data [i] = data [i+1];
account [i] = account [i+1];
}
}
System.out.println("删除《"+name+"》成功!");
break;

case 4:
System.out.println("--->借出DVD");
System.out.println("请输入DVD名称:");
name = input.next();
boolean isfind = false;
for(int i = 0;i<names.length;i++){
if(names [i] ==null){
index = i;
break;
}
}
for(int i = 0; i<index;i++){
if(names [i].equals(name)){
if(status [i] ==true){
System.out.println("《"+name+"》已被借出!");
isfind = true;
break;
}else{
status [i] = true;
do{
System.out.print("请输入借出日期:");
time = input.nextInt();
if(time>31){
isOK = false;
}else{
data [i] = time;
isOK = true;
}
}while(!isOK);
account [i]++;
System.out.println("借出《"+name+"》成功!");
isfind = true;
break;
}
}else{
isfind = false;
}
}
if(!isfind){
System.out.println("没有找到匹配的信息!");
}
break;
case 5:
boolean isRight;
boolean isfind5 = false ;
System.out.println("--->归还DVD");
System.out.print("请输入DVD名称:");
name = input.next();
for(int i = 0;i<names.length;i++){
if(names [i] ==null){
index = i;
break;
}
}
for(int i = 0;i<=index;i++){
if(name.equals(names [i])){
if(status [i]==true){
do{
System.out.println("请输入归还日期:");
time = input.nextInt();
if(time<31||time>data [i]){
System.out.println("归还《"+name+"》成功!");
System.out.println("借出日期是:"+data [i]);
System.out.println("归还日期是:"+time);
System.out.println("应付租金(元):"+(time - data[i]));
isRight = true;
}else{
isRight = false;
System.out.println("归还日期不能小于借出日期;一个月只有31天!");
}
}while(!isRight);
isfind5 = true;
break;
}else{
System.out.println("该DVD没有被借出!无法进行归还操作!");
isfind5 = true;
break;
}
}else{
isfind5 = false;
}
}
if(!isfind5){
System.out.println("没有找到匹配的信息!");
break;
}

case 6:
System.out.println("退出DVD");
exit =true;
return;
}

System.out.println("**************************");

do{
System.out.print("输入0返回:");
if(0!= input.nextInt()){
isZero = false;
}else{
isZero = true;
}
}while(!isZero);


}while(!exit);
}
}



测试的时候出现了很多问题,目前发现的有:




还有就是“借DVD”这个功能的程序我单独测试的时候是没有问题的,但是一放在一块了就出错了。

麻烦大家帮我看看到底是怎么回事?谢谢

java新手 --------------------编程问答-------------------- 没仔细看,粗粗看了下,你的删除做的有问题, 而且对输入的没做合法性判断, 只要在一开始那个界面输入个非int类型或者是超过int类型的范围就报错了。 --------------------编程问答-------------------- 输入不匹配异常! --------------------编程问答--------------------
引用 1 楼 acefr 的回复:
没仔细看,粗粗看了下,你的删除做的有问题, 而且对输入的没做合法性判断, 只要在一开始那个界面输入个非int类型或者是超过int类型的范围就报错了。

合法性判断是什么?
在输入0退出那里,我输入的是0一样会报错。 --------------------编程问答-------------------- 楼主输入的有问题。太长了,直接运行了
--------------------编程问答--------------------
引用 3 楼 alice_sg 的回复:
Quote: 引用 1 楼 acefr 的回复:

没仔细看,粗粗看了下,你的删除做的有问题, 而且对输入的没做合法性判断, 只要在一开始那个界面输入个非int类型或者是超过int类型的范围就报错了。

合法性判断是什么?
在输入0退出那里,我输入的是0一样会报错。


合法性判断就是对输入的值做个判断,如果这个输入值符合你的要求才执行下面的程序, 如果不符合,那就抛出异常。 比如你这程序在主界面输入abc 之类的肯定报错,那你就得针对这种情况做处理, 你这主菜单只有1~6, 你可以对不是1~6的输入进行异常处理。
补充:Java ,  Java SE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,