我们对此任务有一些指导方针:1。使用scanner(scanner scanner=new scanner(system.in);)2。使用方法scanner.nextline()
我们必须一步一步地构建一个游戏(Mastermind),我总是在使用nextInt()和switchcase(用于输入不是int的东西)时出错(BlueJ)顺便说一句:我们不应该使用nextint-我们应该使用nextline--但我如何使用switchcase来实现这一点?
import java.util.Scanner;
public class Game {
/**
* Methods
*/
public void play() {
System.out.println("******************* Game **********************");
System.out.println("* (1) CPU vs Human *");
System.out.println("* (2) CPU vs CPU *");
System.out.println("* (3) Human vs CPU *");
System.out.println("* (4) Highscore *");
System.out.println("* (5) End *");
System.out.println("-------------------------------------------------");
System.out.println("Your choice: ");
Scanner scanner = new Scanner(System.in);
// i used this so far but i get an error for entering a-z or other stuff than numbers
int userInput = scanner.nextInt();
//i have to use this but it doesnt work with switchcase - any suggestions?
//String userInput = scanner.nextLine();
scanner.close();
switch(userInput) {
case 1: // not written yet
case 2: // not written yet
case 3: // not written yet
case 4: // not written yet
case 5: System.exit(0);
default: System.out.println("Illegal userinput! Only enter numbers between 1 and 5!");
}
}
}
您需要做的是使用integer.parseInt(strings)
方法将字符串(由.nextline()
方法生成)解析为整数。如果给定的字符串不是整数,此方法将抛出NumberFormatException
,您可以捕获该字符串并使用它来了解用户何时输入了无效的数字,以便再次询问他/她。
类似于:
public static void main(String[] args)
{
boolean validInput = false;
Scanner scanner = new Scanner(System.in);
while (!validInput)
{
System.out.println("******************* Game **********************");
System.out.println("* (1) CPU vs Human *");
System.out.println("* (2) CPU vs CPU *");
System.out.println("* (3) Human vs CPU *");
System.out.println("* (4) Highscore *");
System.out.println("* (5) End *");
System.out.println("-------------------------------------------------");
System.out.println("Your choice: ");
try
{
// i used this so far but i get an error for entering a-z or other stuff than numbers
int userInput = Integer.parseInt(scanner.nextLine().trim());
//If no error took place, then the input is valid.
validInput = true;
//i have to use this but it doesnt work with switchcase - any suggestions?
//String userInput = scanner.nextLine();
switch (userInput)
{
case 1: // not written yet
case 2: // not written yet
case 3: // not written yet
case 4: // not written yet
case 5:
System.exit(0);
default:
validInput = false;
System.out.println("Illegal userinput! Only enter numbers between 1 and 5!");
}
} catch (Exception e)
{
System.out.println("Invalid Input, please try again");
}
}
scanner.close();
}
我是java新手,我的任务是使用扫描器读取数组,并在另一种方法中读取int。 我正在做的是计算一只兔子到达河对岸所需的最小跳跃次数。数组中的int表示从河的一边开始的石头的距离,另一个int表示石头的数量。兔子能跳的最远距离是50。 对于输入和输出: 输入n:7(输入,河中的石头数)32 46 70 85 96 123 145(输入,石头与起点之间的距离,最后一个数字是河的宽度,即目的地(河对岸)
我有两个do-while循环用于进行自定义输入验证。问题是它会自动进入下一个do while循环。正确插入名称后,我必须放置一个新的下一行():name=scanner。nextLine() 我知道当光标停留在那里时,nextLine()会出现“小故障”,您必须调用nextLine()才能继续。资料来源:https://www.geeksforgeeks.org/why-is-scanner-sk
问题内容: 如何将扫描仪的定界符设置为;或换行? 我试过: 但这不起作用。 问题答案: 通常,在模式中,您需要将翻倍。 所以,尝试 要么 编辑 :如果是问题,则可能要尝试以下操作: 它匹配的一个或多个,和。 注意 :我还没有尝试过这些。
问题内容: 我正在尝试读取具有多个单词的字符串,即。洛杉矶或纽约市。如果有两个词并将它们分割在变量之间,则使用scanner.next()进行“出发”和“到达”只会读取第一个。nextLine()也不是很幸运。这是我的代码: 我知道这很简单,但我还没有弄清楚。 这是上面的代码的输入/输出: 输入航班号:29 输入出发城市:(立即跳至下一行) 输入到达城市: -—我真正想要的是---- 输入航班号:
问题内容: 我的Java作业有问题。我遇到了意外的异常,特别是: java.util.NoSuchElementException:找不到行 我正在使用,该程序不断读取任何内容,并重复“无效格式”异常文本。如果输入正确的值,则第一部分通过,然后该部分立即进入此异常。如果输入的值不正确,则它将开始循环异常。 这是我的代码: 问题答案: 您关闭了多个库,这些库关闭了底层库,因此另一个库将不再从同一库和
问题内容: 使用Scanner类中的useDelimiter时遇到一些问题。 如果我有这个输入 美国广播公司 输出将是 AB 然后等到我键入另一个“-”以打印出最后一个字符 但是,如果我没有用户输入数据,而是将字符串插入到Scanner中,则代码将起作用。原因是什么?如何解决?我不想使用StringTokenzier 问题答案: 如果没有等待您输入另一个,则将错误地假定您已完成输入。 我的意思是,