标签: java.util.scanner

读取多个扫描仪输入

我想要做的是有多个输入都有不同的变量.每个变量都是不同方程的一部分.我正在寻找一种方法来做到这一点,我想我有一个想法.我只是想知道这是否合法,如果可能有更好的方法来做到这一点.

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)

java java.util.scanner

5
推荐指数
1
解决办法
13万
查看次数

解释用JAVA编写的这一行

在HACKERRANK中,这一行代码经常发生。我认为这是跳过空格,但那是什么"\r\u2028\u2029\u0085"意思

 scanner.skip("(\r\n|[\n\r\u2028\u2029\u0085])?");
Run Code Online (Sandbox Code Playgroud)

java java.util.scanner

5
推荐指数
3
解决办法
6273
查看次数

应该在java.util.Scanner中使用什么模式来获取下一个String标识符?

在一行文本中,我有" *(,identifier1*(identifier2",我想读取标识符,定义为单词字符([a-zA-Z_0-9]).

我应该使用哪种模式?我想过使用:

scanner.next( "[\\w]+");
Run Code Online (Sandbox Code Playgroud)

但我得到了例外 java.util.InputMismatchException

java pattern-matching java.util.scanner

4
推荐指数
1
解决办法
2112
查看次数

调用 Scanner.close() 会抛出 nosuchelement 异常

我有一个简单的方法,可以将命令打印到屏幕上,扫描用户的输入,并将其作为字符串返回。如果用户的输入无效,它会通知用户并再次询问。此方法运行良好,但我的导师提到我们应该始终关闭资源,因此我返回并添加了 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() ,但是我没有在上面包含它。

java exception java.util.scanner

4
推荐指数
1
解决办法
2129
查看次数

Java Scanner不等待输入

我这里有两个代码块.一个扫描仪正确地等待用户输入,另一个扫描仪正好通过它并且调用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)

java user-input java.util.scanner

4
推荐指数
2
解决办法
1万
查看次数

当与包含空间的Pattern一起使用时,扫描程序抛出NoSuchElementException

我正在尝试使用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它可以工作,但模式中没有空格,我做错了吗?

java java.util.scanner

4
推荐指数
1
解决办法
464
查看次数

关闭扫描仪会影响性能吗

我正在解决一个竞争问题,在问题中,我使用扫描仪获取用户输入。
这些是 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)

java user-input performance-testing java.util.scanner

4
推荐指数
1
解决办法
213
查看次数

Java中的数据验证和扫描程序

我有一个关于数据验证和扫描仪的问题.以下代码检查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 validation java.util.scanner

4
推荐指数
1
解决办法
106
查看次数

当我用逗号或点分隔小数时扫描双精度数

我对 Java 相当陌生,我正在制作一个简单的计算器。问题是,当我输入的数字是“3.1”时,它会给出异常错误,但当写入“3,1”时,它工作得很好。

\n\n

然而,我的朋友有一个稍微更高级的计算器(带有字符串解析),当我运行他的代码时,会发生相反的情况:3,1 给出异常错误,3.1 工作完美。

\n\n

我很想知道是什么导致了这些不同的行为。

\n\n

我刚才做了这个简单的求和,同样的情况发生了,我将在几分钟内编辑并输入他的计算器代码

\n\n
import 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}\n
Run Code Online (Sandbox Code Playgroud)\n\n

最终编辑:他确实使用Double.parseDouble(). 明白了,区别确实在于它的本地化位置。应该寻找它,但以前从未听说过这个概念。

\n\n

谢谢

\n

java double java.util.scanner

4
推荐指数
1
解决办法
4472
查看次数

扫描仪返回错误的 int 值

Java新手在这里。

我创建了一个函数来简单地返回用户通过 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)

java java.util.scanner

4
推荐指数
1
解决办法
671
查看次数