标签: java.util.scanner

如何使用Scanner使Java读取非常大的文件?

我正在使用以下基本功能,我从网上复制读取文本文件

    public void read ()
{
    File file = new File("/Users/MAK/Desktop/data.txt");
    System.out.println("Start");
    try
    {
        //
        // Create a new Scanner object which will read the data from the
        // file passed in. To check if there are more line to read from it
        // we check by calling the scanner.hasNextLine() method. We then
        // read line one by one till all line is read.
        //
        Scanner scanner = new Scanner(file);
        int lineCount = 0;
        if (scanner == null)
        {
            System.out.println("Null …
Run Code Online (Sandbox Code Playgroud)

java memory large-files java.util.scanner

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

创建Java程序以搜索特定Word的文件

我只是在学习那种语言,并想知道Java程序员在以下情况下会有什么经验?

我想创建一个java程序,它将在指定的文件中搜索特定单词的所有实例.

您将如何解决这个问题,Java API是否提供了一个提供文件扫描功能的类,还是我必须编写自己的类才能执行此操作?

感谢任何输入,
Dom.

java search java.util.scanner

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

Java - Scanner:读取由Pipe分隔的记录行 作为分隔符

我想读取一个文本文件,其中字段数据由分隔符|分隔 (管道符号).

但有些意外发生了:

这是我的代码:

doScannerTest ("Y~2011~GT~Nepal~Ganesh~Tiwari~N", "~");
doScannerTest("Y|2011|GT|Nepal|Ganesh|Tiwari|N", "|");

private static void doScannerTest(String recordLine, String delim) {
    java.util.Scanner lineScanner = new java.util.Scanner(recordLine);
    lineScanner.useDelimiter(delim);
    while (lineScanner.hasNext()) {
        System.out.println(lineScanner.next());
    }
}
Run Code Online (Sandbox Code Playgroud)

delim~工作正常,但是 打印recordLine中的所有字符.

为什么记录有delim | 不管用 ?我无法更改框架代码(使用Scanner)并使用String Split.

java java.util.scanner

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

简单的Java Scanner代码无法正常工作

这是我写的一些基本代码的骨架,用于制作一个简单的游戏:

    Scanner in = new Scanner(System.in);

    String name;
    String playing;
    int age;

    do {

        System.out.println("Enter your name");
        name = in.nextLine();

        System.out.println("Enter your age");
        age = in.nextInt();

        System.out.println("Play again?");
        playing = in.nextLine();

    } while (true);
Run Code Online (Sandbox Code Playgroud)

代码无法按预期工作,例如,以下是代码的预期功能:

Enter your name
John
Enter your age
20
Play again?
Yes
Enter your name
Bill
...
Run Code Online (Sandbox Code Playgroud)

但是,再次阅读Play有一个问题,这是实际输出:

Enter your name
John
Enter your age
20
Play again?
Enter your name
Run Code Online (Sandbox Code Playgroud)

如您所见,"再次播放?"之前会再次显示"输入您的姓名".能够接受输入.当调试播放变量设置为""时,没有我可以看到的输入,我无法弄清楚正在消耗什么.任何帮助将不胜感激,谢谢!

java loops java.util.scanner

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

Java Scanner - 除非出现引号,否则用空格分隔?

我正在尝试使用Java中的Scanner类从配置文件中获取数据.文件的元素由空格分隔.但是,如果短语或元素应解释为字符串文字(包括空格),则双引号或单引号是元素周围的位置.这给出了如下所示的文件:

> R 120 Something AWord

> P 160 SomethingElse "A string literal"
Run Code Online (Sandbox Code Playgroud)

使用Java Scanner类时,默认情况下它仅用空格分隔.Scanner类具有useDelimiter()函数,该函数使用正则表达式为文本指定不同的分隔符.然而,我对正则表达式并不擅长,所以我不确定我是怎么做的.

我怎么能用空格分隔,除非有引号围绕着什么?

java regex java.util.scanner

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

使用Java删除字符串中的所有元音

我正在为我的计算机科学课程做作业.任务是获取用户输入,删除所有元音,然后打印新语句.

我知道我可以使用这段代码轻松完成:

string.replaceAll("[aeiou](?!\\b)", "")
Run Code Online (Sandbox Code Playgroud)

但我的导师希望我使用嵌套的if和else if语句来实现结果.现在我正在使用这样的东西:

if(Character.isLetter('a')){
    'do something'
}else if(Character.isLetter('e')){
    'do something else'
Run Code Online (Sandbox Code Playgroud)

但我不知道该怎么里面做ifelse if报表.我应该删除这封信吗?或者有更好的方法吗?

看到这是我的作业,我不想要完整的答案只是提示.谢谢!

java java.util.scanner

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

Java:Scanner读取整数,但不在while/for循环中使用它

我正在学习的那本书使用另一个库来阅读输入,所以它无法帮助我....

我看不出我的错误在哪里.算法:

  1. 读取n的值
  2. 将i的值设置为3
  3. 按照步骤

重复

While i < 2*n

       i+1

       Write 1/(2*i+1) to the console.
Run Code Online (Sandbox Code Playgroud)

我的代码:

import java.util.Scanner;

public class Aufgabe420 {
public static void main (String[] args) {
int i, n; 

    System.out.println("Please enter a number!");
    Scanner sc = new Scanner(System.in);
    n = sc.nextInt();
    System.out.println("n ="+n);
    System.out.println("The while-loop starts!");
    i = 3;
    while (i < 2*n){
        i += 1;
        System.out.println(1/(2*i+1));
    }

        System.out.println("now with for-loop");    

    for (i = 3; i < (2*n); i+=1) {
        System.out.println(1/(2*i+1));
    }


    }
}
Run Code Online (Sandbox Code Playgroud)

但尝试一下,结果是:请输入一个数字!五

n …

java algorithm java.util.scanner

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

为什么扫描程序在循环java中没有请求try-catch中的其他输入

假设我需要继续询问用户,直到他进入double.

我做的是我使用了一个while循环并检查是否有异常.

如果有异常,我会去询问下一个输入.

double bal = 0;
Scanner sc = new Scanner(System.in);
while (true) {
    try {
        System.out.println("Enter the balance");
        bal = sc.nextDouble();
        break;
        } catch (Exception e) {
          System.out.println("That isn't a number");
    }
}
System.out.println("Bal is " + bal);
sc.close();
Run Code Online (Sandbox Code Playgroud)

但是如果我输入一个非double,那么它不会要求下一个输入,继续打印以无限循环结束的那两行.

Enter the balance
XYZ
That isn't a number
Enter the balance
That isn't a number
Enter the balance
That isn't a number
Enter the balance
That isn't a number
....
Run Code Online (Sandbox Code Playgroud)

我错过了什么?

java double exception-handling java.util.scanner

3
推荐指数
2
解决办法
162
查看次数

Java:Pattern在Scanner中的行为有所不同

遇到了Java中正则表达式匹配的奇怪行为.第一个输出命令true按预期打印,但是当打包相同的字符串时Scanner,输出为false.我究竟做错了什么?

public static void main(String[] args) {
  Pattern p = Pattern.compile(" *\\[");
  System.out.println(p.asPredicate().test("[]")); //true

  Scanner s = new Scanner("[]");
  System.out.println(s.hasNext(" *\\[")); //false
}
Run Code Online (Sandbox Code Playgroud)

java regex java.util.scanner

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

仅返回ArrayList中的最后一个元素

我一直在教自己java,我一直坚持一个问题,无论我做什么似乎无法解决.我做了一些研究,但所提供的所有选项似乎都没有用.希望你们能够教我一些东西.

我有一个.txt文件,其中包含:

AccountName1:Password1  
AccountName2:Password2  
AccountName3:Password3  
AccountName4:Password4  
AccountName5:Password5   
Run Code Online (Sandbox Code Playgroud)

然后读取文件的元素并将其插入List:

import java.io.File;
import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public abstract class AccountFileReader {

  private static Scanner sc;

  public static void main(String[] args) {  

      try {         
        // Enables ability to find file in any OS.
           String file = File.separator + "some folder name"
                         + File.seperator + "AccNamePw.txt";

           File f = new File(file);
           sc = new Scanner(f);

           List<AccountInfo> accounts = new ArrayList<AccountInfo>();
           String name = "";
           String password = "";

           while (sc.hasNext()){ …
Run Code Online (Sandbox Code Playgroud)

java arraylist try-catch getter-setter java.util.scanner

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