求教各路大神~
package com.imooc.test;
import com.imooc.model.Bear;
import com.imooc.model.Lion;
import com.imooc.model.Monkey;
import com.imooc.model.Parrot;
import com.imooc.model.Clown;
import java.util.InputMismatchException;
import java.util.Scanner;
public class CircusTest {
/**
* 提示信息
*/
public void displayMenu() {
System.out.println("**********欢迎来到太阳马戏团**********");
System.out.println("**********请选择表演者***************");
System.out.println("******* 1、棕熊 **********");
System.out.println("******* 2、狮子 **********");
System.out.println("******* 3、猴子 **********");
System.out.println("******* 4、鹦鹉 **********");
System.out.println("******* 5、小丑 **********");
}
public void displayMenu2() {
System.out.println("**********是否继续观看(1/0)**********");
Scanner sc = new Scanner(System.in);
int input = sc.nextInt();
if(input==1) {
this.displayMenu();
}
else if(input==0) {
System.out.println("**********是否继续观看(1/0)**********");
}
else {
System.out.println("*******输入信息不正确,请重新输入**********");
}
}
/**
* 主方法用switch结构
*/
public static void main(String[] args) {
CircusTest test = new CircusTest();
Scanner sc = new Scanner(System.in);
int input = 0;
test.displayMenu();
while (true) {
try {
input = sc.nextInt();
} catch (InputMismatchException e) {
System.out.println("*******输入信息不正确,请重新输入**********");
sc.next();
continue;
}
// 若数据超出0-5的范围,提示错误信息并且要求重新输入!
if ((input < 0) | (input > 5)) {
System.out.println("*******输入的数字超出范围,请重新输入*******");
continue;
}
if (input == 0) {
System.out.println("**********欢迎下次光临**********");
break;
}
switch (input) {
case 1:
Bear bear = new Bear("Bill", 1);
bear.act();
System.out.println();
test.displayMenu2();
break;
case 2:
Lion lion = new Lion("Lain", 2, "灰色", "公狮");
lion.act();
System.out.println();
test.displayMenu2();
break;
case 3:
Monkey monkey = new Monkey("Tom", 1, "金丝猴");
monkey.act();
System.out.println();
test.displayMenu2();
break;
case 4:
Parrot parrot = new Parrot("Rose", 1, "牡丹鹦鹉");
parrot.act();
System.out.println();
test.displayMenu2();
break;
case 5:
Clown clown = new Clown("Kahle", 5);
clown.act();
System.out.println();
test.displayMenu2();
break;
}
}
}
}
想请问大神们,我怎么才能把程序在运行到switch结构里,然后输出某一位表演者的act()以后,能够显示“是否继续观看(1/0)”的内容,然后再输入1来继续switch的input,然后输入0直接结束整个程序啊?我现在写的程序直接输入0的话,其实并没有结束,还要再输入一次0才结束整个程序~求教~先谢谢大神们了~!正在回答
你现在是在default里直接continue了,IAct actor = null写在while外面还是里面都无所谓。如果输错了,直接进入下一次循环,与actor值无关。这种已经是最优解。
如果default里不写continue:
第一种
while(true)
IAct actor = null //循环开始actor赋值为null
switch
case: actor=值;break;
default: //这里什么都不用写,直接给提示就可以
if (actor != null) actor.act();
else continue;
询问循环
第二种
IAct actor = null
while(true) //循环开始actor没有重新为null,第二次表演就可能actor已经指向实例对象
switch
case: actor=实例对象;break;
default: actor=null; //输入错误时再赋值为null
if (actor != null) actor.act();
else continue;
询问循环
package com.imooc.test;
import java.util.Scanner;
import com.imooc.model.Bear;
import com.imooc.model.Clown;
import com.imooc.model.IAct;
import com.imooc.model.Lion;
import com.imooc.model.Monkey;
import com.imooc.model.Parrot;
public class CircusTest3 {
/**
* 提示信息
*/
public void displayMenu() {
System.out.println("**********欢迎来到太阳马戏团**********");
System.out.println("**********请选择表演者***************");
System.out.println("******* 1、棕熊 **********");
System.out.println("******* 2、狮子 **********");
System.out.println("******* 3、猴子 **********");
System.out.println("******* 4、鹦鹉 **********");
System.out.println("******* 5、小丑 **********");
}
public void displayMenu2() {
Scanner sc1 = new Scanner(System.in);
while (true) {
System.out.println("**********是否继续观看(1/0)**********");
String input1 = sc1.next();
if (input1.equals("1")) { // 结束这个询问是否继续表演的循环,进入到下一次表演的循环
displayMenu();
break;
} else if (input1.equals("0")) { // 程序直接安全退出
System.out.println("**********欢迎下次光临**********");
System.exit(0);
} else { // 给提示,继续下一次询问是否继续
System.out.println("*******输入信息不正确,请重新输入**********");
continue;
}
}
}
public static void main(String[] args) {
CircusTest3 test = new CircusTest3();
test.displayMenu();
Scanner sc = new Scanner(System.in);
String input = null;
IAct actor = null;
while (true) {
input = sc.next();
switch (input) { // 根据输入的指令调取表演者信息
case "1":
actor = new Bear("Bill", 1);
break;
case "2":
actor = new Lion("Lain", 2, "灰色", "公狮");
break;
case "3":
actor = new Monkey("Tom", 1, "金丝猴");
break;
case "4":
actor = new Parrot("Rose", 1, "牡丹鹦鹉");
break;
case "5":
actor = new Clown("Kahle", 5);
break;
default:
System.out.println("*******输入信息不正确,请重新输入**********");
continue;
}
actor.act();
test.displayMenu2();
}
}
}
感谢大神们指教~!package com.imooc.test;
import java.util.Scanner;
import com.imooc.model.Bear;
import com.imooc.model.Clown;
import com.imooc.model.IAct;
import com.imooc.model.Lion;
import com.imooc.model.Monkey;
import com.imooc.model.Parrot;
public class CircusTest3 {
/**
* 提示信息
*/
public void displayMenu() {
System.out.println("**********欢迎来到太阳马戏团**********");
System.out.println("**********请选择表演者***************");
System.out.println("******* 1、棕熊 **********");
System.out.println("******* 2、狮子 **********");
System.out.println("******* 3、猴子 **********");
System.out.println("******* 4、鹦鹉 **********");
System.out.println("******* 5、小丑 **********");
}
public void displayMenu2() {
Scanner sc1 = new Scanner(System.in);
while (true) {
System.out.println("**********是否继续观看(1/0)**********");
String input1 = sc1.next();
if (input1.equals("1")) { // 结束这个询问是否继续表演的循环,进入到下一次表演的循环
displayMenu();
break;
} else if (input1.equals("0")) { // 程序直接安全退出
System.out.println("**********欢迎下次光临**********");
System.exit(0);
} else { // 给提示,继续下一次询问是否继续
System.out.println("*******输入信息不正确,请重新输入**********");
continue;
}
}
}
public static void main(String[] args) {
CircusTest3 test = new CircusTest3();
test.displayMenu();
Scanner sc = new Scanner(System.in);
String input = null;
while (true) {
IAct actor = null;
try {
input = sc.next();
} catch (Exception ex) {
System.out.println("*******输入信息不正确,请重新输入**********");
sc.next();
continue;
}
switch (input) { // 根据输入的指令调取表演者信息
case "1":
actor = new Bear("Bill", 1);
break;
case "2":
actor = new Lion("Lain", 2, "灰色", "公狮");
break;
case "3":
actor = new Monkey("Tom", 1, "金丝猴");
break;
case "4":
actor = new Parrot("Rose", 1, "牡丹鹦鹉");
break;
case "5":
actor = new Clown("Kahle", 5);
break;
default:
System.out.println("*******输入信息不正确,请重新输入**********");
break;
}
actor.act();
test.displayMenu2();
}
}
}
老师,这样子写,我一开始输入字母程序就出错了,显示NullPointerException。。。应该怎么修改啊?同学你好,同学的代码整体完成的不错,但是还可以精简一下,比如
1、在switch外定义接口的引用为null,在case后,指向具体的实现类对象,并且不需要将接口的引用强制转换为子类对象。
2、在switch后调用act()和displayMenu2()方法。
3、建议使用switch-case,不使用if-else。
代码如:
public class CircusTest2 {
/**
* 提示信息
*/
public void displayMenu() {
System.out.println("**********欢迎来到太阳马戏团**********");
System.out.println("**********请选择表演者***************");
System.out.println("******* 1、棕熊 **********");
System.out.println("******* 2、狮子 **********");
System.out.println("******* 3、猴子 **********");
System.out.println("******* 4、鹦鹉 **********");
System.out.println("******* 5、小丑 **********");
}
public void displayMenu2() {
Scanner sc1 = new Scanner(System.in);
while (true) {
System.out.println("**********是否继续观看(1/0)**********");
String input1 = sc1.next();
if (input1.equals("1")) { // 结束这个询问是否继续表演的循环,进入到下一次表演的循环
displayMenu();
break;
} else if (input1.equals("0")) { // 程序直接安全退出
System.out.println("**********欢迎下次光临**********");
System.exit(0);
} else { // 给提示,继续下一次询问是否继续
System.out.println("*******输入信息不正确,请重新输入**********");
continue;
}
}
}
public static void main(String[] args) {
CircusTest2 test = new CircusTest2();
test.displayMenu();
Scanner sc = new Scanner(System.in);
while (true) {
IAct actor = null;
String input = sc.next();
switch (input) { // 根据输入的指令调取表演者信息
case "1":
actor = new Bear("bile", 1);
break;
case "2":
actor = new Lion("Lain", 2, "灰色", "公狮");
break;
case "3":
actor = new Monkey("Tom", 1, "金丝猴");
break;
case "4":
actor = new Parrot("Rose", 1, "牡丹鹦鹉");
break;
case "5":
actor = new Clown("Kahle", 5);
break;
default:
System.out.println("请输入0-5之间的数");
break;
}
actor.act();
test.displayMenu2();
}
}
}祝:学习愉快~
package com.imooc.test;
import java.util.InputMismatchException;
import java.util.Scanner;
import com.imooc.model.Bear;
import com.imooc.model.Clown;
import com.imooc.model.IAct;
import com.imooc.model.Lion;
import com.imooc.model.Monkey;
import com.imooc.model.Parrot;
public class CircusTest2 {
/**
* 提示信息
*/
public void displayMenu() {
System.out.println("**********欢迎来到太阳马戏团**********");
System.out.println("**********请选择表演者***************");
System.out.println("******* 1、棕熊 **********");
System.out.println("******* 2、狮子 **********");
System.out.println("******* 3、猴子 **********");
System.out.println("******* 4、鹦鹉 **********");
System.out.println("******* 5、小丑 **********");
}
public void displayMenu2() {
Scanner sc1 = new Scanner(System.in);
while (true) {
System.out.println("**********是否继续观看(1/0)**********");
String input1 = sc1.next();
if (input1.equals("1")) { // 结束这个询问是否继续表演的循环,进入到下一次表演的循环
displayMenu();
break;
} else if (input1.equals("0")) { // 程序直接安全退出
System.out.println("**********欢迎下次光临**********");
System.exit(0);
} else { // 给提示,继续下一次询问是否继续
System.out.println("*******输入信息不正确,请重新输入**********");
continue;
}
}
}
public static void main(String[] args) {
CircusTest2 test = new CircusTest2();
test.displayMenu();
Scanner sc = new Scanner(System.in);
String input = sc.next();
while (true) {
if (input.equals("0")) {
System.out.println("**********欢迎下次光临**********");
break;
} else if ((input.equals("1")) || (input.equals("2")) || (input.equals("3")) || (input.equals("4"))
|| (input.equals("5"))) {
switch (input) { // 根据输入的指令调取表演者信息
case "1":
IAct bear = new Bear("Bill", 1);
((Bear) bear).act();
System.out.println();
test.displayMenu2();
break;
case "2":
IAct lion = new Lion("Lain", 2, "灰色", "公狮");
((Lion) lion).act();
System.out.println();
test.displayMenu2();
break;
case "3":
IAct monkey = new Monkey("Tom", 1, "金丝猴");
((Monkey) monkey).act();
System.out.println();
test.displayMenu2();
break;
case "4":
IAct parrot = new Parrot("Rose", 1, "牡丹鹦鹉");
((Parrot) parrot).act();
System.out.println();
test.displayMenu2();
break;
case "5":
IAct clown = new Clown("Kahle", 5);
((Clown) clown).act();
System.out.println();
test.displayMenu2();
break;
}
input = sc.next();
} else {
System.out.println("*******输入信息不正确,请重新输入**********");
input = sc.next();
continue;
}
}
}
}package com.imooc.test;
import com.imooc.model.Animal;
import com.imooc.model.Bear;
import com.imooc.model.Lion;
import com.imooc.model.Monkey;
import com.imooc.model.Parrot;
import com.imooc.model.Clown;
import com.imooc.model.IAct;
import java.util.InputMismatchException;
import java.util.Scanner;
public class CircusTest {
/**
* 提示信息
*/
public void displayMenu() {
System.out.println("**********欢迎来到太阳马戏团**********");
System.out.println("**********请选择表演者***************");
System.out.println("******* 1、棕熊 **********");
System.out.println("******* 2、狮子 **********");
System.out.println("******* 3、猴子 **********");
System.out.println("******* 4、鹦鹉 **********");
System.out.println("******* 5、小丑 **********");
}
/**
* 主方法用switch结构
*/
public static void main(String[] args) {
CircusTest test = new CircusTest();
Scanner sc = new Scanner(System.in);
int input = 0;
test.displayMenu();
while (true) {
try {
input = sc.nextInt();
} catch (InputMismatchException e) {
System.out.println("*******输入信息不正确,请重新输入**********");
sc.next();
continue;
}
// 若数据超出0-5的范围,提示错误信息并且要求重新输入!
if ((input < 0) | (input > 5)) {
System.out.println("*******输入的数字超出范围,请重新输入*******");
continue;
}
if (input == 0) {
System.out.println("**********欢迎下次光临**********");
break;
}
switch (input) { // 根据输入的指令调取表演者信息
case 1:
IAct bear = new Bear("Bill", 1);
((Bear) bear).act();
System.out.println();
break;
case 2:
IAct lion = new Lion("Lain", 2, "灰色", "公狮");
((Lion) lion).act();
System.out.println();
break;
case 3:
IAct monkey = new Monkey("Tom", 1, "金丝猴");
((Monkey) monkey).act();
System.out.println();
break;
case 4:
IAct parrot = new Parrot("Rose", 1, "牡丹鹦鹉");
((Parrot) parrot).act();
System.out.println();
break;
case 5:
IAct clown = new Clown("Kahle", 5);
((Clown) clown).act();
System.out.println();
break;
}
while (true) { // 是否继续表演的循环
System.out.println("**********是否继续观看(1/0)**********");
Scanner sc1 = new Scanner(System.in);
int input1 = 0;
try {
input1 = sc.nextInt();
} catch (InputMismatchException e) {
System.out.println("*******输入信息不正确,请重新输入**********");
sc.next();
continue;
}
if (input1 == 1) { // 结束这个询问是否继续表演的循环,进入到下一次表演的循环
test.displayMenu();
break;
} else if (input1 == 0) { // 程序直接安全退出
System.out.println("**********欢迎下次光临**********");
System.exit(0);
} else { // 给提示,继续下一次询问是否继续
System.out.println("*******输入信息不正确,请重新输入**********");
continue;
}
}
}
}
}package com.imooc.test;
import com.imooc.model.Bear;
import com.imooc.model.Lion;
import com.imooc.model.Monkey;
import com.imooc.model.Parrot;
import com.imooc.model.Clown;
import java.util.InputMismatchException;
import java.util.Scanner;
public class CircusTest {
/**
* 提示信息
*/
public void displayMenu() {
System.out.println("**********欢迎来到太阳马戏团**********");
System.out.println("**********请选择表演者***************");
System.out.println("******* 1、棕熊 **********");
System.out.println("******* 2、狮子 **********");
System.out.println("******* 3、猴子 **********");
System.out.println("******* 4、鹦鹉 **********");
System.out.println("******* 5、小丑 **********");
}
/**
* 主方法用switch结构
*/
public static void main(String[] args) {
CircusTest test = new CircusTest();
Scanner sc = new Scanner(System.in);
int input = 0;
test.displayMenu();
while (true) {
try {
input = sc.nextInt();
} catch (InputMismatchException e) {
System.out.println("*******输入信息不正确,请重新输入**********");
sc.next();
continue;
}
// 若数据超出0-5的范围,提示错误信息并且要求重新输入!
if ((input < 0) | (input > 5)) {
System.out.println("*******输入的数字超出范围,请重新输入*******");
continue;
}
if (input == 0) {
System.out.println("**********欢迎下次光临**********");
break;
}
switch (input) { // 根据输入的指令调取表演者信息
case 1:
Bear bear = new Bear("Bill", 1);
bear.act();
System.out.println();
break;
case 2:
Lion lion = new Lion("Lain", 2, "灰色", "公狮");
lion.act();
System.out.println();
break;
case 3:
Monkey monkey = new Monkey("Tom", 1, "金丝猴");
monkey.act();
System.out.println();
break;
case 4:
Parrot parrot = new Parrot("Rose", 1, "牡丹鹦鹉");
parrot.act();
System.out.println();
break;
case 5:
Clown clown = new Clown("Kahle", 5);
clown.act();
System.out.println();
break;
}
while (true) { // 是否继续表演的循环
System.out.println("**********是否继续观看(1/0)**********");
Scanner sc1 = new Scanner(System.in);
int input1 = 0;
try {
input1 = sc.nextInt();
} catch (InputMismatchException e) {
System.out.println("*******输入信息不正确,请重新输入**********");
sc.next();
continue;
}
if (input1 == 1) { //结束这个询问是否继续表演的循环,进入到下一次表演的循环
test.displayMenu();
break;
} else if (input1 == 0) { //程序直接安全退出
System.out.println("**********欢迎下次光临**********");
System.exit(0);
} else { //给提示,继续下一次询问是否继续
System.out.println("*******输入信息不正确,请重新输入**********");
continue;
}
}
}
}
}你这个程序还有一个问题,就是问你是否继续表演时,如果选择不是0或者1,比如3,提示错误,但是再选择1,就是开始表演了,而不是表演菜单选择。
分成两个部分,“表演”为一个部分,“是否继续”为一个部分。
给你个缩进结构的思路,自己品一下。
while(true)
//输入表演菜单
switch //表演的switch
case:表演内容;break;
while(true) //是否继续表演的循环
if 1,break; //结束这个询问是否继续表演的循环,进入到下一次表演的循环
else if 0,System.exit(0); //这个表示程序直接安全退出,不管你有几重循环
else //输错情况,只给提示,继续下一次询问是否继续
- 参与学习 人
- 提交作业 9410 份
- 解答问题 16556 个
综合就业常年第一,编程排行常年霸榜,无需脱产即可学习,北上广深月薪过万 无论你是未就业的学生还是想转行的在职人员,不需要基础,只要你有梦想,想高薪
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星