标签: java.util.scanner

Java.util.scanner错误处理

我正在帮助一个有java问题的朋友.但是,我们遇到了障碍.我们使用Java.Util.Scanner.nextInt()从用户那里获取一个数字,不断询问用户是否提供了其他内容.唯一的问题是,我们无法弄清楚如何做错误的handeling.

我们尝试过的:

do {
  int reloop = 0;
  try {
    number = nextInt(); 
  } catch (Exception e) {
    System.out.println ("Please enter a number!");
    reloop ++; 
  }
} while(reloop != 0);
Run Code Online (Sandbox Code Playgroud)

唯一的问题是,如果您输入的不是数字,这将无限循环.

有帮助吗?

java java.util.scanner

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

Java Scanner不会关注文件

试图拖尾/解析一些日志文件.条目以日期开头,然后可以跨越多行.

这有效,但是没有看到要提交的新条目.

File inputFile = new File("C:/test.txt");
InputStream is = new FileInputStream(inputFile);
InputStream bis = new BufferedInputStream(is);
//bis.skip(inputFile.length());
Scanner src = new Scanner(bis);
src.useDelimiter("\n2010-05-01 ");

while (true) {
    while(src.hasNext()){
    System.out.println("[ " + src.next() + " ]");
    }
}
Run Code Online (Sandbox Code Playgroud)

看起来不像Scanner的next()或hasNext()检测到新的文件条目.

任何想法我还能实现,基本上,一个带有自定义分隔符的tail -f.


好的 - 使用凯利的建议我正在检查和刷新扫描仪,这是有效的.谢谢 !!

如果有人有改进建议PLZ吗!

File inputFile = new File("C:/test.txt");
InputStream is = new FileInputStream(inputFile);
InputStream bis = new BufferedInputStream(is);
//bis.skip(inputFile.length());
Scanner src = new Scanner(bis);
src.useDelimiter("\n2010-05-01 ");

while (true) {
    while(src.hasNext()){
    System.out.println("[ " + src.next() + " ]"); …
Run Code Online (Sandbox Code Playgroud)

java io tail java.util.scanner

6
推荐指数
1
解决办法
897
查看次数

扫描仪在大约2400个字符后切断我的字符串

我有一些非常基本的代码

while (scan.hasNextLine())
{
    String temp = scan.nextLine();
    System.out.println(temp);
}
Run Code Online (Sandbox Code Playgroud)

其中scan是文件上的扫描仪.

然而,在一条约6k字符长的特定行上,临界值会在2470个字符之后切断.什么时候削减它没有什么特别之处; 它位于"澳大利亚"一词的中间.如果我从行中删除字符,它删除的地方会发生变化; 例如,如果我删除文件中的字符0-100,那么扫描仪将获得之前的100-2570.

之前我曾使用Scanner来制作更大的字符串.什么可能出错?

java string java.util.scanner

6
推荐指数
1
解决办法
802
查看次数

如何在扫描仪输入之前运行一段时间?

我正在尝试编写一个循环,直到我在运行应用程序的控制台中键入特定文本.就像是:

while (true) {
try {
    System.out.println("Waiting for input...");
    Thread.currentThread();
    Thread.sleep(2000);
    if (input_is_equal_to_STOP){ // if user type STOP in terminal
        break;
    }
} catch (InterruptedException ie) {
    // If this thread was intrrupted by nother thread
}}
Run Code Online (Sandbox Code Playgroud)

而且我希望它在每次通过时写一行,所以我不希望它在一段时间内停止并等待下一个输入.我需要使用多个线程吗?

java java.util.scanner

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

捕获异常后请求输入

我希望用户输入一个由以下代码扫描的数字:

scanner.nextInt();
Run Code Online (Sandbox Code Playgroud)

如果用户输入字符串,则程序会抛出InputMismatchException,这很明显.我想以这样的方式捕获异常,即程序提示用户输入输入,直到用户输入整数值.

Scanner scanner = new Scanner(System.in);
while(true) {
    try {
        System.out.println("Please enter a number: ");
        int input = scanner.nextInt();
        System.out.println(input);
        //statements
        break;
    }
    catch(InputMismatchException | NumberFormatException ex ) {
        continue;
    }
}
Run Code Online (Sandbox Code Playgroud)

如果输入字符串,此代码将创建无限循环.

java java.util.scanner numberformatexception inputmismatchexception

6
推荐指数
1
解决办法
8440
查看次数

扫描仪没有扫描我的输入

我正在尝试阅读一行,然后进入if语句.但是在第一次输入红色后它就会终止.我不知道出了什么问题,我无法弄明白

import java.util.Scanner;

public class mainen {

    public static void main(String[] args) {
        Formler form = new Formler();
        Scanner Sscan = new Scanner(System.in);
        Scanner Dscan = new Scanner(System.in);
        String input;
        System.out.println("Formler: Molmassa");
        input = Sscan.nextLine();

        if(input == "molmassa" || input == "Molmassa"){
            double m;
            double M;
            System.out.println("Massa: "); m = Dscan.nextDouble();
            System.out.println("Molmassa: "); M = Dscan.nextDouble();
            System.out.println(form.getMolmassa(m, M));
        }
    }

}
Run Code Online (Sandbox Code Playgroud)

java java.util.scanner

6
推荐指数
2
解决办法
170
查看次数

如何在java中读取逗号分隔的整数输入

import java.io.*;
import java.util.*;
class usingDelimiters
{
    public static void main(String args[])
    {
        Scanner dis=new Scanner(System.in);
        int a,b,c;
        a=dis.nextInt();
        b=dis.nextInt();
        c=dis.nextInt();
        System.out.println("a="+a);
        System.out.println("b="+b);
        System.out.println("c="+c);
    }
}
Run Code Online (Sandbox Code Playgroud)

当我的输入是1 2 3(用空格分隔)时,这个程序工作正常但是,当我的输入是1,2,3(用逗号分隔)时,如何修改我的程序

java delimiter java.util.scanner

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

为什么Scanner#nextInt for for循环继续抛出异常?

我一直在学习JAVA,我对代码有一点疑问:

class apple {
    public static void main(String[] args) {

        int[] num = new int[3];

        Scanner input = new Scanner(System.in);
        for (int i = 0; i < num.length; i++) {

            try {
                num[i] = input.nextInt();
            } catch (Exception e) {
                System.out
                    .println("Invalid number..assigning default value 20");
            num[i] = 20;
            }
        }

        for (int i = 0; i < num.length; i++) {
            System.out.println(num[i]);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我编写了一个小程序来处理异常,如果用户输入不是Int抛出异常并分配默认值.如果我把扫描器语句放在for循环中,它工作正常,但如果我把它带到它之外,它会分配抛出异常的相同值,即我输入的是char而不是int.但是如果我输入所有整数,它会在数组中分配正确的值.

Scanner input = new Scanner(System.in);
Run Code Online (Sandbox Code Playgroud)

我希望你们理解我的问题.

java java.util.scanner

6
推荐指数
1
解决办法
720
查看次数

如何在Java中的多个类中使用相同的Scanner

我有一个使用多个类的程序,我希望其他类能够访问我在主类中声明的相同扫描程序,我假设它将使用某种get方法完成,但我无法找到任何资源来帮助我.

以下是我在主要课程中制作的扫描仪:

  Scanner in = new Scanner(System.in);
            System.out.println("Enter a filename");
            String filename = in.nextLine();
            File InputFile = new File (filename);
            Scanner reader = new Scanner(filename);
Run Code Online (Sandbox Code Playgroud)

读者Scanner是我希望能够访问组成该程序的其他类的人,任何人都可以给我一些指导我如何做到这一点?非常感谢您的帮助!

java class java.util.scanner

6
推荐指数
1
解决办法
6213
查看次数

字符串数组名称搜索

所以我有一个文件,其中包含所有的总统 - 他们的名字,中间名首字母(如果有的话)和姓氏.

需要读入该文件,并且用户可以输入总统的名称来搜索它,并且应该显示该总统.

如果用户按名字或姓氏搜索,而不是两者都搜索,我会显示总统.

例如,外部文件包含:

George,Washington,(1789-1797)
Franklin,D.,Roosevelt,(1933-1945)
... and so on with all the presidents
Run Code Online (Sandbox Code Playgroud)

我需要用户能够键入名字,姓氏,或者姓名和名字,并获得所需的结果(日期与大部分时间无关).

试过很多不同的事情,但如果用户按名字和姓氏搜索,就不能到达显示总统的地方.

这是我到目前为止所得到的:

public class NameSearch {

    public static void main(String[] args) throws IOException {

        try {
            // read from presidents file
            Scanner presidentsFile = new Scanner(new File("Presidents.txt"));
            // scanner for user input
            Scanner keyboard = new Scanner(System.in);
            // create array list of each line in presidents file
            ArrayList<String> presidentsArrayList = new ArrayList<String>();

            // prompt user to enter a string to see if it …
Run Code Online (Sandbox Code Playgroud)

java file java.util.scanner

6
推荐指数
1
解决办法
2124
查看次数