我有这段代码,我试图运行从用户通过扫描器类获得输入。我无法在输入控制台中键入任何内容。没有例外。只是计算机在等待输入,而我输入的内容没有显示在控制台中。
import java.util.HashMap;
import java.util.Scanner;
class DataBreach extends Exception{}
public class tictactoe{
char[] data = new char[]{' ',' ',' ',' ',' ',' ',' ',' ',' '};
HashMap<Integer, Character> XO = new HashMap<Integer, Character>();
void assignplayercharacter(){
Scanner scan = new Scanner(System.in);
while (true){
String xo;
System.out.print("Enter the player1 character(X or O):");
while(!(scan.hasNext())){}
xo = scan.next();
if((xo.equals("x"))||(xo.equals("o"))||(xo.equals("X"))||(xo.equals("O"))){
char x_o = xo.toUpperCase().charAt(0);
XO.put(1,x_o);
x_o = ((xo.toUpperCase().equals("X"))?'O':'X');
XO.put(2,x_o);
break;
}
}
scan.close();
}
void play(int player){
Scanner scan = new Scanner(System.in);
while (true){
int pos;
System.out.print("Player"+player+"'s turn:");
while(!(scan.hasNext())){}
try{
pos = Integer.parseInt(scan.next());
if(data[pos-1]!=' '){
throw new DataBreach();
}
data[pos-1] = XO.get(player);
break;
}
catch(java.util.InputMismatchException e){
System.out.println("Please enter only numbers from 1-9");
String leftover = scan.nextLine();
}
catch(java.lang.ArrayIndexOutOfBoundsException e){
System.out.println("Please enter numbers only from 1-9");
}
catch(DataBreach e){
System.out.println("That spot is already occupied. Please choose another spot");
}
}
scan.close();
}
void game(){
assignplayercharacter();
play(1);
}
public static void main(String args[]){
tictactoe obj = new tictactoe();
obj.game();
}
}
当我运行这个程序时,我能够获得第一个方法void assignplayercharacter,但是第二个函数void play(int player)的输入。程序正在运行,控制台正在等待输入,但当我键入时,控制台上没有出现字符。如果我注释掉第一个方法void assignplayercharacter,并尝试运行void play(int player),我就可以从用户那里读取输入。
void play(int player)-此函数从用户那里获取输入,并根据给定的输入修改char[]数据数组中的字符。
我是有问题,只有在获得输入从用户。
java.util.scanner.close()
方法关闭扫描器。如果关闭了scanner对象
,则不能从控制台获取输入。因此,从代码中删除scan.close()
,它将像魅力一样工作。只关闭扫描仪对象在结束。关于扫描器类及其方法的更多信息
我想从静态块中的用户那里读取数据,并需要检查那里的一些条件,但当我试图调用nextInt()时,它会导致一些错误 线程“main”java.lang.ExceptioninInitializerError中出现异常 由:java.util.scanner.throwfor(scanner.java:862),java.util.scanner.next(Scanner.java:1485),jav
问题内容: 我正在编写一个使用Event类的程序,该类中有一个日历实例和一个String类型的描述。创建事件的方法使用扫描仪获取月,日,年,小时,分钟和说明。我遇到的问题是Scanner.next()方法仅返回空格之前的第一个单词。因此,如果输入为“我的生日”,则该事件实例的描述就是“我的”。 我做了一些研究,发现人们使用Scanner.nextLine()解决此问题,但是当我尝试这样做时,它只是
这里是Java新手,尝试扫描下面表单中的输入: 3 3 3 101 000 101 拜托,有更有经验的人能教我如何解决这个问题吗?我发现一些问题与。nextline()和。nextint()有类似的问题,但不完全是这样。不过,如果真的是复制品,我提前道歉... (如果需要,我会添加更多信息)
我这里有两个代码块。一个扫描器正确地等待用户输入,另一个则直接通过它并调用,返回。下面是工作的块: 下面是没有的块: 这两个都是单独的类,并且是从另一个类中的main方法调用的。基本上,调用,后者又调用某个Player类的方法...这是非工作代码所在的地方。程序中是否有不适合接受输入的时候?我的印象是,任何时候我需要用户输入,我都可以使用这种方法。谢谢!
我正在编写一个程序,将给定的整数简化为它们的最简单的比率。但是当通过Scanner类在一个子方法中获取输入时发生了一个错误。下面是代码: