我想要做的是有多个输入都有不同的变量.每个变量都是不同方程的一部分.我正在寻找一种方法来做到这一点,我想我有一个想法.我只是想知道这是否合法,如果可能有更好的方法来做到这一点.
import java.util.*;
public class Example{
public static void main(String args[]){
Scanner dd = new Scanner(System.in);
System.out.println("Enter number.");
int a = dd.nextInt();
System.out.println("Enter number.");
int b = dd.nextInt();
System.out.println("Enter number.");
int c = dd.nextInt();
}
}
Run Code Online (Sandbox Code Playgroud) 在HACKERRANK中,这一行代码经常发生。我认为这是跳过空格,但那是什么"\r\u2028\u2029\u0085"意思
scanner.skip("(\r\n|[\n\r\u2028\u2029\u0085])?");
Run Code Online (Sandbox Code Playgroud) 在一行文本中,我有" *(,identifier1*(identifier2",我想读取标识符,定义为单词字符([a-zA-Z_0-9]).
我应该使用哪种模式?我想过使用:
scanner.next( "[\\w]+");
Run Code Online (Sandbox Code Playgroud)
但我得到了例外 java.util.InputMismatchException
我有一个简单的方法,可以将命令打印到屏幕上,扫描用户的输入,并将其作为字符串返回。如果用户的输入无效,它会通知用户并再次询问。此方法运行良好,但我的导师提到我们应该始终关闭资源,因此我返回并添加了 close 方法,现在每次调用该方法时,无论用户输入如何,我都会收到 NoSuchElementException。这是代码...
private String getUserString(String userCommand) {
System.out.println(userCommand);
Scanner scan = new Scanner(System.in);
String userinput = scan.nextLine().trim();
if (userinput.isEmpty()){
System.out.println("Invalid choice");
return getUserString(userCommand);
}
else {
return userinput;
}
}
Run Code Online (Sandbox Code Playgroud)
异常总是指向用户输入作为 scan.nextLine().trim() 启动的行 注意* 我在每个 return 语句之前的每行上添加了 scan.close() ,但是我没有在上面包含它。
我这里有两个代码块.一个扫描仪正确地等待用户输入,另一个扫描仪正好通过它并且调用nextInt()返回一个NoSuchElementException.这是有效的块:
public void startGame() {
out.println("Player1: 1 for dumb player, 2 for smart player, 3 for human player.");
Scanner scan = new Scanner(System.in);
p = scan.nextInt();
if (p == 1)
p1 = new DumbPlayer("ONE");
if (p == 2)
p1 = new SmartPlayer("ONE");
else
p1 = new HumanPlayer("ONE");
out.println("Player2: 1 for dumb player, 2 for smart player, 3 for human player.");
p = scan.nextInt();
if (p == 1)
p2 = new DumbPlayer("TWO");
if (p == 2)
p2 …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用a Scanner和a 从输入中读取指定的文件格式Pattern,如下所示:
Pattern p = Pattern.compile("\\d+\\sx\\s\\d+");
Scanner sc = new Scanner(System.in);
String input = "";
try {
input = sc.next(p);
} catch(NoSuchElementException ne) {
System.out.println("No such token");
}
sc.close();
System.out.println(input);
Run Code Online (Sandbox Code Playgroud)
但是当我1 x 1用作输入时,它会抛出NoSuchElementException
模式\\d+x\\d+,输入1x1它可以工作,但模式中没有空格,我做错了吗?
我正在解决一个竞争问题,在问题中,我使用扫描仪获取用户输入。
这些是 2 个代码段,一个关闭扫描器,一个不关闭扫描器。
关闭扫描仪
import java.util.Scanner;
public class JImSelection {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = Integer.valueOf(scanner.nextLine());
while (n-- > 0) {
double number = (Math.log(Long.valueOf(scanner.nextLine())) / Math.log(2));
System.out.println((int) number - number == 0 ? "Yes" : "No");
}
scanner.close();
}
}
Run Code Online (Sandbox Code Playgroud)
不关闭扫描仪
import java.util.Scanner;
public class JImSelection {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = Integer.valueOf(scanner.nextLine());
while (n-- > 0) {
double …Run Code Online (Sandbox Code Playgroud) 我有一个关于数据验证和扫描仪的问题.以下代码检查userinput.不允许使用除整数之外的任何内容,并要求用户重新输入值.我的问题是代码仅在扫描程序是在while循环中声明.如果扫描仪在外面声明,程序将无限执行.为什么?谢谢.
int UserInp;
boolean dataType=false;
while(dataType==false)
{
Scanner sc=new Scanner(System.in);
try
{
System.out.print("\nEnter a number: ");
UserInp=sc.nextInt();
dataType=true;
}
catch(Exception JavaInputMismatch)
{
System.out.println("Option not available.Try again.");
}
}
Run Code Online (Sandbox Code Playgroud) 我对 Java 相当陌生,我正在制作一个简单的计算器。问题是,当我输入的数字是“3.1”时,它会给出异常错误,但当写入“3,1”时,它工作得很好。
\n\n然而,我的朋友有一个稍微更高级的计算器(带有字符串解析),当我运行他的代码时,会发生相反的情况:3,1 给出异常错误,3.1 工作完美。
\n\n我很想知道是什么导致了这些不同的行为。
\n\n我刚才做了这个简单的求和,同样的情况发生了,我将在几分钟内编辑并输入他的计算器代码
\n\nimport java.util.Scanner;\n\npublic class Tutorial_7 {\n public static void main(String args[]){\n Scanner scan = new Scanner(System.in);\n double num1, num2;\n\n System.out.println("Introduza os dois n\xc3\xbameros");\n\n System.out.println("1\xc2\xba: ");\n num1 = scan.nextDouble();\n System.out.println("2\xc2\xba: ");\n num2 = scan.nextDouble();\n\n System.out.println((num1 + num2));\n scan.close();\n }\n\n}\nRun Code Online (Sandbox Code Playgroud)\n\n最终编辑:他确实使用Double.parseDouble(). 明白了,区别确实在于它的本地化位置。应该寻找它,但以前从未听说过这个概念。
谢谢
\nJava新手在这里。
我创建了一个函数来简单地返回用户通过 Scanner 给出的 int 。目标是避免用户未键入整数时出现错误,通知他们并让他们重试。
如果第一次尝试时该值是整数,则它工作正常,但如果我键入一个字符(出现错误,函数“重新启动”),则该函数将返回“默认”零。尝试了不同的事情,但我绝对不明白这里的逻辑。
这是代码:
//Initialize the Scanner earlier
public static Scanner keyBoardRead = new Scanner(System.in);
public static int intEntry()
{
int entry;
keyBoardRead = new Scanner(System.in);
if (keyBoardRead.hasNextInt() == true)
{
entry = keyBoardRead.nextInt();
System.out.println("entry variable = "+entry);
// Here the correct entry prints but doesn't seem to return
return entry;
}
else
{
System.out.println("Invalid entry.\n");
intEntry();
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
示例输出:
z
Invalid entry.
2
entry variable = 2
// Function exits and output = …Run Code Online (Sandbox Code Playgroud)