扫描仪输入不工作 (Java)?
Scanner input not working (Java)?
我是 Java 的新手,一直在尝试创建一个互动游戏。我可以在一个 class 中完成,但是我最近才学会如何使用两个 class,所以我想尝试一下。无论如何,我的第二个 class(tuna) 中的扫描仪似乎由于某种原因无法正常工作。我试图用 if 和 if else 语句来实现它,但这也不起作用(是的,我使用的是 '.equals' 而不是 '==' 作为 if 语句的参数)。我被合法地困住了,需要帮助。我在 Stack 上寻找答案,但没有找到这个问题的答案。请告诉我这部分代码有什么问题,因为它可能是一个逻辑错误。如果这是重复的,请将 link 发送给我作为答案,我会记下这个。
代码:
第一个 CLASS:
import java.util.Scanner;
class hand {
public static void main(String[] args) {
tuna opObject = new tuna();
//creating input
Scanner input = new Scanner(System.in);
//instructions
System.out.println("This is an interactive game. You are a traveler and have come across this strange hotel. Type in 'go' to begin.");
// Initializing game
if(input.nextLine().equals ("go")) {
System.out.println("A smiling, some what tall fellow in a red suit walks up to you.'Welcome to the amazing, KingstonTraveler Hotel! How may I serve you traveler?'");
}
System.out.println("Will you a) punch him b) 'I would like a room' c) DIE! ");
opObject.options();
}
}
SECOND CLASS(扫描仪不工作):
import java.util.Scanner;
public class tuna {
Scanner input = new Scanner("System.in");
public String answer = input.nextLine();
public void options() {
switch(answer){
case "a": System.out.println("answer a");
break;
case "b": System.out.println("answer b");
break;
case "c": System.out.println("answer c");
}
}
}
问题出在金枪鱼class:
Scanner input = new Scanner("System.in");
这将创建一个 Scanner, that scans only on the String "System.in"。如果删除 "
,您会注意到,您必须在程序启动前输入一些内容。这是因为当创建相应的对象时(即 main
方法中的第一行)定义了属性(在本例中为 input
)。你想要的是这样的:
import java.util.Scanner;
public class Tuna { // Classes should always begin with an uppercase letter
// Moved object attributes into method
public void options() {
// Now input is read if options() gets called
Scanner input = new Scanner(System.in);
String answer = input.nextLine();
switch(answer) {
case "a":
System.out.println("answer a");
break;
case "b":
System.out.println("answer b");
break;
case "c":
System.out.println("answer c");
}
input.close(); // Close stream when we are done
}
}
我是 Java 的新手,一直在尝试创建一个互动游戏。我可以在一个 class 中完成,但是我最近才学会如何使用两个 class,所以我想尝试一下。无论如何,我的第二个 class(tuna) 中的扫描仪似乎由于某种原因无法正常工作。我试图用 if 和 if else 语句来实现它,但这也不起作用(是的,我使用的是 '.equals' 而不是 '==' 作为 if 语句的参数)。我被合法地困住了,需要帮助。我在 Stack 上寻找答案,但没有找到这个问题的答案。请告诉我这部分代码有什么问题,因为它可能是一个逻辑错误。如果这是重复的,请将 link 发送给我作为答案,我会记下这个。 代码: 第一个 CLASS:
import java.util.Scanner;
class hand {
public static void main(String[] args) {
tuna opObject = new tuna();
//creating input
Scanner input = new Scanner(System.in);
//instructions
System.out.println("This is an interactive game. You are a traveler and have come across this strange hotel. Type in 'go' to begin.");
// Initializing game
if(input.nextLine().equals ("go")) {
System.out.println("A smiling, some what tall fellow in a red suit walks up to you.'Welcome to the amazing, KingstonTraveler Hotel! How may I serve you traveler?'");
}
System.out.println("Will you a) punch him b) 'I would like a room' c) DIE! ");
opObject.options();
}
}
SECOND CLASS(扫描仪不工作):
import java.util.Scanner;
public class tuna {
Scanner input = new Scanner("System.in");
public String answer = input.nextLine();
public void options() {
switch(answer){
case "a": System.out.println("answer a");
break;
case "b": System.out.println("answer b");
break;
case "c": System.out.println("answer c");
}
}
}
问题出在金枪鱼class:
Scanner input = new Scanner("System.in");
这将创建一个 Scanner, that scans only on the String "System.in"。如果删除 "
,您会注意到,您必须在程序启动前输入一些内容。这是因为当创建相应的对象时(即 main
方法中的第一行)定义了属性(在本例中为 input
)。你想要的是这样的:
import java.util.Scanner;
public class Tuna { // Classes should always begin with an uppercase letter
// Moved object attributes into method
public void options() {
// Now input is read if options() gets called
Scanner input = new Scanner(System.in);
String answer = input.nextLine();
switch(answer) {
case "a":
System.out.println("answer a");
break;
case "b":
System.out.println("answer b");
break;
case "c":
System.out.println("answer c");
}
input.close(); // Close stream when we are done
}
}