我有一系列骰子,对于每个骰子,我需要提示用户是否要重新滚动它。最简单的方法似乎是使用扫描仪类进行提示 - 我检查他们输入的内容并适当地处理。但是,如果用户输入中不存在请求的数据,则 scanner.next() 将引发异常。所以,扫描仪.hasnext()需要以某种方式适应这里。
这是我的密码;它会将条目输入到响应数组中,但如果用户输入既不包含Y也不包含N,则会抛出异常。
public Boolean[] chooseDice(int diceNum){
Boolean[] responses = new Boolean[diceNum];
Scanner scansworth = new Scanner(System.in);
for (int i=0; i<diceNum; i++){
System.out.printf("Reroll this die? (%d)\n",i);
responses[i] = (scansworth.next("[YN]")) == "Y" ? true : false;
}
return responses;
我如何调用scansworth.hasNext("[YN]"),以便解释器不会锁定,并在循环的每一步之后正确地检查入口?
我觉得你可以试试这样的东西.....
public Boolean[] chooseDice(int diceNum){
Boolean[] responses = new Boolean[diceNum];
boolean isCorrect = false;
Scanner scansworth = new Scanner(System.in);
for (int i=0; i<diceNum; i++){
while(!isCorrect){
if((scansworth.hasNext().equalsIgnoreCase("Y")) || (scansworth.hasNext().equalsIgnoreCase("N")))`{
responses[i] = scansworth.next();
isCorrect = true;
}else{
isCorrect = false;
}
}
}
您可以将读取代码的用户输入包围一段时间,以检查用户输入是否处于给定模式……使用hasNext(“[YN]”)
..此外,您不需要scanner.next。。
for (int i=0; i<diceNum; i++){
int count = 0;
System.out.printf("Reroll this die? (%d)\n",i);
// Give three chances to user for correct input..
// Else fill this array element with false value..
while (count < 3 && !scansworth.hasNext("[YN]")) {
count += 1; // IF you don't want to get into an infinite loop
scansworth.next();
}
if (count != 3) {
/** User has entered valid input.. check it for Y, or N **/
responses[i] = (scansworth.next()).equals("Y") ? true : false;
}
// If User hasn't entered valid input.. then it will not go in the if
// then this element will have default value `false` for boolean..
}
在分离标记之前,我试图检查扫描仪是否有多个标记。我目前正在尝试使用扫描仪。hasNext()(我的扫描仪的名字是sc)。如果用户输入“string int”,那么我不想打印“enter age”或“enter grade” 目前,无论输入是什么,我的程序都会跳过if语句。如果我把它拿走!然后,即使输入是一行,这些行也会打印出来。他们似乎也打印后,下一个是我发现奇怪的。我将非常感谢您的帮助!
我是java新手,我的任务是使用扫描器读取数组,并在另一种方法中读取int。 我正在做的是计算一只兔子到达河对岸所需的最小跳跃次数。数组中的int表示从河的一边开始的石头的距离,另一个int表示石头的数量。兔子能跳的最远距离是50。 对于输入和输出: 输入n:7(输入,河中的石头数)32 46 70 85 96 123 145(输入,石头与起点之间的距离,最后一个数字是河的宽度,即目的地(河对岸)
我不知道如何创建一个字符数组,更糟糕的是,一个作为“扫描器”(System.in)的数组。我会解释: 我想输入一个名字,并从每个字母中接收(输出)等效的数字。但是我不知道怎么做。例如: 但我不希望有一个整数,我希望每个数都是一个完全独立的索引,因为我要“算名字”。 下面是我在没有扫描仪的情况下尝试的一个例子: 9数组的每个索引都是一个有3个字母的字符数组。也许我的想法完全错误。 非常感谢大家的关注
我有一个Java程序,需要在多个类的多个点上从控制台获取用户输入。我试着在每节课上使用一台扫描仪,但当我关闭一台扫描仪时,它会关闭系统。所以我想在整个程序中使用相同的扫描仪。我在主类中打开了扫描仪,但在其他类中如何使用相同的扫描仪?
问题内容: 今天早些时候,我问如何在不陷入无限循环的情况下重试/捕获输入不匹配异常 但是这是两个过程,首先,游戏会要求用户提供网格的大小,然后在启动后,游戏会要求用户设置标志或跨过一个单元格(如果我的游戏在其他单元格之上,会打印出周围的地雷数量),但是我收到一些奇怪的错误代码: 错误: 在我的打印语句之间打印异常消息的奇怪的事情(网格是一条语句,指令也是一条) 进行搜索时,我发现无法在同一位置使用
我正在为课堂做作业。由于某种原因,程序完全跳过了用户应该键入变量的部分。我想不出任何理由为什么它会以这种方式运行,因为我的其余代码位于部分之后(它要求诸如和类型之类的东西)工作正常且有序。