Java 如何编写一个通用的用户输入语句,并使用不同的值多次使用?
我是Java新手,所以我真的不知道如何表达我的问题。我正在尝试编写一个文本冒险,有很多不同的选项供用户输入。我已经取得了相当大的进步,但是我对所有的用户输入和选项感到非常困惑。请注意,我在main之前创建了一个输入System.out.println的短方法,允许我只输入文本。我想知道我是否可以对用户输入代码块做类似的事情Java 如何编写一个通用的用户输入语句,并使用不同的值多次使用?,java,user-input,Java,User Input,我是Java新手,所以我真的不知道如何表达我的问题。我正在尝试编写一个文本冒险,有很多不同的选项供用户输入。我已经取得了相当大的进步,但是我对所有的用户输入和选项感到非常困惑。请注意,我在main之前创建了一个输入System.out.println的短方法,允许我只输入文本。我想知道我是否可以对用户输入代码块做类似的事情 import java.util.Scanner; public class AdventureTest { static void text(String body){
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");
}
}我不知道我是否理解正确。您想要一个用于读取输入的shorcut吗? 处理中心函数不同输入的最通用方法是返回字符串,然后将其转换为所需类型,如下所示:
public static String read(){
return (new Scanner(System.in)).nextLine();
}
但我不建议您这样做,因为您每次读取用户输入时都要创建一个新的扫描仪。
您还可以为这种情况下需要的每种类型创建相应的版本
public static String readChr(){
return (new Scanner(System.in)).nextLine().charAt(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");
}
}
你想做的是循环,问同样的问题,但是你需要一些方法来停止循环
在这里,我加入了一个循环。我创建了一个布尔值
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);
}
}
import java.util.Scanner;
公开课考试{
静态无效文本(字符串体){
System.out.println(“+”正文);
}
公共静态void main(字符串[]args){
煤焦方向;
boolean done=false;//常见的方法是问多项选择题,而不单独回答。因此,用户只有预定义的选项,您可以通过数字或前缀数字来识别,如answer_01、answer_02等。如果您想从用户获得多个输入,最简单的方法是将其放入循环中。谢谢,我的意思是不喜欢用户输入“n”对于North,我是否需要再次重写整个Scanner语句和switch语句,以继续处理位于North的内容和那里的用户选项。如果在上一次移动到North之后,我们再次决定在下一次移动到North?或者改为向东?然后再到North,会发生什么?一旦世界从起点开始超过两个正方形,你几乎不可能写出足够的开关es来覆盖所有可能性!你需要考虑建立一张世界地图,并跟踪玩家漫游的地方。