我是Java的新手,所以我真的不知道如何说出我的问题。我正在尝试编写一个文本冒险,其中包含许多不同的选项供用户输入。我已经取得了很大进展,但我对所有用户输入和选项感到非常困惑。请注意,我创建了一个在 main 之前输入System.out.println的简短方法,它允许我只输入 text 。我想知道我是否可以使用用户输入的代码块做类似的事情。
import java.util.Scanner;
public class AdventureTest {
static void text(String body){
System.out.println("" + body);
}
public static void main(String[] args) {
char direction;
Scanner input = new Scanner(System.in);
System.out.print("Go: (n/e/s/w)? ");
direction = input.nextLine().charAt(0);
switch( direction )
{
case 'n':
text("You go North");
break;
case 'e':
text("You go East");
break;
case 's':
text("You go South");
break;
case 'w':
text("You go West");
break;
default:
text("You fall down a hole!");
System.exit(0);
}
text("Program continues");
}
}
答案 0 :(得分:0)
我不知道我是否理解得当。你想要一个shorcut阅读输入? 我处理来自中央函数的不同输入的最通用的方法是返回一个字符串然后将其转换为你需要的类型:
public static String readChr(){
return (new Scanner(System.in)).nextLine().charAt(0);
}
但我不建议你这样做,因为每次阅读用户输入时都要创建一个新的扫描仪。 在这种情况下,您还可以为所需的每种类型创建此版本。
SimpleDateFormat df = new SimpleDateFormat("yyyy-mm-dd");
df.parse(
但你最终会再次制造轮子。 请澄清你的意思。
答案 1 :(得分:0)
这是你的解决方案我的男人! 我把你的开关放在一个do ... while循环中,所以在每个用户选择之后,你可以问他/她是否想要选择另一个步骤,并且在用户不想继续之后完全运行。
import java.util.Scanner;
public class AdventureTest {
private static Scanner input = new Scanner(System.in);
private static void text(String body) {
System.out.println("" + body);
}
public static void main(String[] args) {
char direction,answer = 0;
do{
System.out.print("Go n,e,s or w?: ");
direction = input.nextLine().charAt(0);
switch( direction )
{
case 'n': {
text("You go North");
System.out.println("Do you want to continue? (y/n)");
answer = input.nextLine().charAt(0);
}
break;
case 'e': {
text("You go East");
System.out.println("Do you want to continue? (y/n)");
answer = input.nextLine().charAt(0);
}
break;
case 's':{
text("You go South");
System.out.println("Do you want to continue? (y/n)");
answer = input.nextLine().charAt(0);
}
break;
case 'w':{
text("You go West");
System.out.println("Do you want to continue? (y/n)");
answer = input.nextLine().charAt(0);
}
break;
default:
text("You fall down a hole!");
System.exit(0);
}
}while(answer == 'y');
text("Program continues");
}
}
答案 2 :(得分:0)
你想要做的是循环,问同样的问题,但是你需要一些方法来停止循环。
我在这里放了一个do .. while (condition)
循环
我创建了一个布尔done
,其开头为false
- 您不是"已完成"。
当输入q
而不是nesw方向时,done
设置为true
,因此while条件发生变化,程序停止循环。
import java.util.Scanner;
public class AdventureTest {
static void text(String body) {
System.out.println("" + body);
}
public static void main(String[] args) {
char direction;
boolean done = false; // <----- Added This
Scanner input = new Scanner(System.in);
System.out.println("Enter q to quit");
do {
System.out.print("Go: (n/e/s/w)? ");
direction = input.nextLine().charAt(0);
switch( direction )
{
case 'n':
text("You go North");
break;
case 'e':
text("You go East");
break;
case 's':
text("You go South");
break;
case 'w':
text("You go West");
break;
case 'q': // <---- new case, for quit
text("You have quit");
done = true;
break;
default:
text("You fall down a hole!");
System.exit(0);
}
if (!done) text("Program continues");
}
while (!done);
}
}