标签: java.util.scanner

为什么Scanner会实现Iterator <String>?

我只是想知道为什么java.util.Scanner实现了java.util.Iterator

Scanner实现remove方法并抛出UnsupportedOperationException.

但是,在实现接口时,不应该是一个类,履行接口的契约?

实现iterator和添加抛出异常的方法有什么用?

为什么不避免接口的实现并保持简单?

有人可以争辩说,它被定义为可以扩展的类Scanner可以实现该方法,就像AbstractList有一个抛出一个的add方法UnsupportedOperationException.但是AbstractList是一个abstract班级,而是Scanner一个final班级.

这不是一个糟糕的设计实践吗?

java oop design-patterns java.util.scanner

11
推荐指数
1
解决办法
2272
查看次数

Java的Scanner vs String.split()vs StringTokenizer; 我该用哪个?

我目前正在使用split()扫描文件,其中每行包含多个字符串'~'.我读到某个地方Scanner可以用一个长文件做得更好,性能方面,所以我考虑检查出来.

我的问题是:我是否必须创建两个实例Scanner?也就是说,一个读取一行而另一个基于该行来获取分隔符的标记?如果我必须这样做,我怀疑我是否会从使用它中获得任何好处.也许我在这里错过了一些东西?

java regex split java.util.scanner

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

Java Scanner问题

如何将扫描仪的分隔符设置为; 还是新线?

我试过了: Scanner.useDelimiter(Pattern.compile("(\n)|;")); 但它不起作用.

java regex java.util.scanner

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

Java:扫描模式的字符串

这可能很快.为什么这段代码没有返回任何内容?

import java.util.Scanner;

public class MainClass {

public static void main(String[] args) {
    try {

        Scanner sc = new Scanner("asda ASA adad");
        String pattern = "[A-Z]+";

        while ((sc.hasNext(pattern))) {

            System.out.println(sc.next(pattern));
        }
        sc.close();
    } catch (Exception e) {
        e.printStackTrace();
    }
}
}
Run Code Online (Sandbox Code Playgroud)

java java.util.scanner

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

我们何时应该使用控制台类?

我正在读关于Console课程,在第一行,它是写的

Java 6的新手,当我们Java SE 6从命令行运行时,我们通常使用控制台类对象

那么,这意味着我们通过命令行隐式使用控制台类?

然后,我开始寻找有关Console类的更多细节,我在javaConsole链接中找到了来自控制台类的Input.所以,总结了一些观点

  1. 控制台类只能在IDE之外使用System.console().readLine();
  2. Consoleclass 从控制台读取密码或密码,并使用回显禁用readPassword()

虽然,我们有Scanner类和BufferedReader类来从控制台读取输入,并且是在早期添加的Java 5.那么,仅仅因为安全原因Console类被添加了Java 6?或者是否有其他优势可以使用本课程.

有人可以分享更多关于Console课程的细节吗

console bufferedreader java.util.scanner java-5 java-6

10
推荐指数
1
解决办法
4329
查看次数

如何使用Scanner检查线路末端?

我搜索过类似的问题,但没有人帮忙.

考虑一个文件:

你好你好吗?
当时你在哪里?

我希望在每一行结束后进行一些操作.如果我使用next()它,当我到达第一行的末尾时不会告诉我.

我也见过,hasNextLine()但它只告诉我是否存在另一条线.

java java.util.scanner

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

扫描程序Java混乱中的分隔符

根据Java API Scanner使用分隔符将整个输入分解为令牌.我试图理解令牌和分隔符.我正在做这个程序并且遇到了困惑

import java.util.Scanner;

public class Test {
    public static void main(String[] args) {
        Scanner s = null;
        try {
            s = new Scanner(System.in);
            s.useDelimiter("A");
            System.out.println("1 " + s.next().length());
            System.out.println("2 " + s.next().length());
            System.out.println("3 " + s.next().length());
            System.out.println("4 " + s.next().length());
        } finally {
            if (s != null) {
                s.close();
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

当我使用输入时,AAAAAasdf我得到以下输出.

1 0
2 0
3 0
4 0
Run Code Online (Sandbox Code Playgroud)

我可以理解这个输出,因为在分隔符之间令牌的长度为零,因此所有都是零但是当我使用默认分隔符并将输入作为

_____aaa\n- >用空格替换下划线,然后\n按下进入eclipse控制台.

为此,我得到输出为

1 3
Run Code Online (Sandbox Code Playgroud)

我无法理解.我给了5个空格,所以它们之间应该有4个长度为0的标记.为什么不?我在这里错过了什么?

java java.util.scanner

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

Java - 关闭扫描程序和资源泄漏

我正在学习Java并且正在开展一些有趣的项目.我遇到的一个问题是,当我使用一个Scanner对象时,Eclipse警告我:

资源泄漏:'扫描'永远不会关闭.

所以,我scan.close();在代码的末尾添加了一个并处理警告.

问题来自因为我在同一个包中也有其他类也使用了扫描程序对象,并且Eclipse告诉我分别关闭这些类中的扫描程序.但是,当我这样做时,它似乎关闭所有扫描仪对象,并在运行时出现错误.

以下是导致错误的原因示例:

import java.util.Scanner;
public class test2 {
    public static void main(String [] args) {
        Scanner scan = new Scanner(System.in);
        int test = 0;
        do {    
            //Do stuff
            test = scan.nextInt();
            System.out.println(test);

            scanTest scanTest = new scanTest();
            scanTest.test();
        } while (test != 0);

        scan.close();       
    }
}

import java.util.Scanner;
public class scanTest { 
    public void test() {
        Scanner scanner = new Scanner(System.in);
        int blah = scanner.nextInt();
        System.out.println(blah);
        scanner.close();
    }
}
Run Code Online (Sandbox Code Playgroud)

scanTest类中关闭扫描仪并test2 …

java eclipse java.util.scanner

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

使用gradle run启动应用程序时,java.util.scanner会抛出NoSuchElementException

我创建了一个简单的java"echo"应用程序,它接受用户的输入并将其显示给他们以演示该问题.我可以使用IntelliJ的内部"运行"命令,以及执行由...生成的编译的java文件时运行此应用程序gradle build.但是,如果我尝试使用执行应用程序gradle run,我会从扫描程序中抛出NoSuchElementException.

我认为gradle或应用程序插件特别对系统IO做了一些奇怪的事情.

应用

package org.gradle.example.simple;

import java.util.Scanner;

public class HelloWorld {
  public static void main(String args[]) {
    Scanner input = new Scanner(System.in);
    String response = input.nextLine();
    System.out.println(response);
  }
}
Run Code Online (Sandbox Code Playgroud)

的build.gradle

apply plugin: 'java'
version '1.0-SNAPSHOT'

apply plugin: 'java'

jar {
    manifest {
        attributes 'Main-Class': 'org.gradle.example.simple.HelloWorld'
    }
}

apply plugin: 'application'

mainClassName = "org.gradle.example.simple.HelloWorld"

sourceCompatibility = 1.5

repositories {
    mavenCentral()
}

dependencies {
    testCompile group: 'junit', name: 'junit', version: '4.11'
}
Run Code Online (Sandbox Code Playgroud)

有关如何使用此应用程序的任何想法gradle run

java stdin gradle java.util.scanner build.gradle

10
推荐指数
1
解决办法
2376
查看次数

如何在Java中快速搜索大型文件中的String?

我正在尝试使用以下内容搜索特定字符串的大文本文件(400MB):

File file = new File("fileName.txt");
try {
    int count = 0;
    Scanner scanner = new Scanner(file);
    while(scanner.hasNextLine()) {
        if(scanner.nextLine().contains("particularString")) {
            count++;
            System.out.println("Number of instances of String: " + count);
        }
    }
} catch (FileNotFoundException e){
    System.out.println(e);
}
Run Code Online (Sandbox Code Playgroud)

这适用于小文件,但对于此特定文件和其他大文件,它需要太长时间(> 10分钟).

这样做最快,最有效的方法是什么?

我现在改为以下内容,并在几秒钟内完成 -

try {
        int count = 0;
        FileReader fileIn = new FileReader(file);
        BufferedReader reader = new BufferedReader(fileIn);
        String line;
        while((line = reader.readLine()) != null) {
            if((line.contains("particularString"))) {
                count++;
                System.out.println("Number of instances of String " + count);
            }
        } …
Run Code Online (Sandbox Code Playgroud)

java io java.util.scanner

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