标签: java.util.scanner

使用Scanner.next()获取文本输入

我试图从Java 6中的键盘输入文本输入.我是该语言的新手,每当我运行以下代码时,我都会收到此错误:

package test1;
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
    boolean quit = false;
    while (!quit){
        Scanner keyIn;
        String c = "x";
        while (c != "y" && c != "n") {
            keyIn = new Scanner(System.in);
            c = keyIn.next();
            keyIn.close();
        }
        if (c == "n")
            quit = true;
    }
 }
}


Exception in thread "main" java.util.NoSuchElementException
at java.util.Scanner.throwFor(Scanner.java:838)
at java.util.Scanner.next(Scanner.java:1347)
at test1.Test.main(Test.java:11)
Run Code Online (Sandbox Code Playgroud)

我错误地使用了next()方法吗?我认为它会等待用户输入,但它看起来不是,并抛出异常说扫描仪中没有任何东西.

java java.util.scanner

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

使用Java在Eclipse中创建扫描仪时出现FileNotFoundException

在Snow Leopard的Eclipse(Indigo)上运行以下Java 6代码时,出现FileNotFoundException异常:

import java.io.*;
import java.util.*;

public class readFile {

    public static void main(String[] args) {

        Scanner s = new Scanner(new FileReader("/Users/daniel/pr/java/readFile/myfile.txt"));  // Line 9

    }
}
Run Code Online (Sandbox Code Playgroud)

例外是

Exception in thread "main" java.lang.Error: Unresolved compilation problem: 
    Unhandled exception type FileNotFoundException

    at readFile.main(readFile.java:9)
Run Code Online (Sandbox Code Playgroud)

我当前的工作空间是/ Users / daniel / pr / java。它仅包含一个项目(readFile),文件层次结构如下所示:

- readFile
    - src
        - (default package)
            - readFile.java
    - JRE System Library [JavaSE-1.6]
    - myfile.txt
Run Code Online (Sandbox Code Playgroud)

在阅读了几个非常相似的问题之后,我尝试了

  • 将myfile.txt的副本放置在项目,bin,src和工作区目录以及我的主文件夹和根文件夹中
  • 识别工作目录并使用相对路径
  • 通过Eclipse中的“运行配置>参数>工作目录”手动设置工作区
  • 在bin,readFile,src和java目录中使用命令行Java启动器运行程序(在所有这些位置中都有myfile.txt的副本)
  • 删除文件扩展名和/或延长文件名(超出某些假定的最小字符限制),并且
  • 验证myfile.txt的权限(现在为rw-r--r--)。

我很茫然。可能是什么问题呢?(谢谢您的阅读!)

java eclipse filenotfoundexception filereader java.util.scanner

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

为什么java.util.Scanner存在?

可能重复:
扫描程序与BufferedReader

是否有任何情况下使用java.util.Scanner来读取某种类型的输入?在我的小测试中,我发现它比java.util.Bufferedreader或从java.util.InputStreamReader实现自己的阅读器要慢得多.

那么为什么我想要使用扫描仪有什么理由呢?

java java.util.scanner

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

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
查看次数

读取逗号和空格分隔的一行 - java

我愿意在Java中从下面的一行读取一系列数字:

1   80,982  163,8164                    170,2620    
Run Code Online (Sandbox Code Playgroud)

所以最终我想要结果数组 [1, 80, 982, 163, 8164, 170, 2620]

我正在考虑使用扫描仪,但不清楚如何以一种简洁的方式实现它,我可以请一些提示吗?

谢谢阅读!

java java.util.scanner

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

Java扫描程序计数文件中的行

我有一个问题,我试图创建一个应用程序,计算文件中符号的所有出现...扫描方法"nextLine"停在一个空行...有没有办法让它继续前进,直到它到达真正的文件结束?

简而言之:我可以在文件中获得REAL行吗?

先感谢您!

java java.util.scanner

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

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 Scanner读取命题逻辑符号作为输入?

 Scanner in = new Scanner(System.in,"UTF-8");
 System.out.println(in.next());
Run Code Online (Sandbox Code Playgroud)

如果我粘贴?,我收到?控制台的输出.有人可以解释我能做些什么来正确读取这样的逻辑符号?我正在使用NetBeans 8.0.1.

谢谢.

java input java.util.scanner

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

扫描仪返回错误的 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
查看次数