标签: java.util.scanner

扫描方法获取char

在Java中用键盘返回的Scanner方法是什么?char

喜欢nextLine()String,nextInt()int

java char java.util.scanner

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

如何将扫描仪输入放入数组中...例如几个数字

Scanner scan = new Scanner(System.in);
double numbers = scan.nextDouble();
double[] avg =..????
Run Code Online (Sandbox Code Playgroud)

java arrays java.util.scanner

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

Scanner类Java中的多个分隔符

如何使用类的useDelimiter()方法Scanner同时使用逗号(,)和换行符(\n)作为分隔符?

我正在解析csv文件中的一些文本.

java delimiter java.util.scanner

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

扫描仪只读取第一个单词而不是行

在我当前的程序中,一种方法要求用户输入产品的描述作为String输入.但是,当我后来尝试打印出这些信息时,只String显示了节目的第一个字.可能是什么原因造成的?我的方法如下:

void setDescription(Product aProduct) {
    Scanner input = new Scanner(System.in);
    System.out.print("Describe the product: ");
    String productDescription = input.next();
    aProduct.description = productDescription;
}
Run Code Online (Sandbox Code Playgroud)

因此,如果用户输入的是"带有橙味的苏打汽水",System.out.print则只会产生"闪闪发光".

任何帮助将不胜感激!

java string java.util.scanner

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

将文件或FileReader与扫描仪一起使用?

免责声明:我已经查看了我能找到的所有问题,但没有一个能回答这个问题.如果你找到一个,请指出我并礼貌.

因此,Oracle I/O教程使用Scanner打开一个文本文件,如下所示:

new Scanner(BufferedReader(FileReader("xanadu.txt")));
Run Code Online (Sandbox Code Playgroud)

但是Javadoc用Scanner打开一个文本文件,如下所示:

new Scanner(new File("myNumbers"));
Run Code Online (Sandbox Code Playgroud)

使用更简单的方法会很好,特别是当我有一个小文件并且可以使用较小的缓冲区时,但我也看到有人说当你直接打开文件时你无法关闭它.如果是这样的话,为什么在官方文档中使用这个成语?

编辑:我也看过,new Scanner(FileReader("blah.txt"));但这似乎是两个世界中最糟糕的.

编辑:我不打算开始讨论是否使用扫描仪.我有一个关于如何使用扫描仪的问题.谢谢.

java file-io java.util.scanner

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

Java Scanner(文件)行为不当,但Scanner(FIleInputStream)始终使用相同的文件

我对Scanner有一种奇怪的行为.它将使用我在使用Scanner(FileInputStream)构造函数时使用的一组特定文件,但它不会与Scanner(File)构造函数一起使用.

情况1: Scanner(File)

Scanner s = new Scanner(new File("file"));
while(s.hasNextLine()) {
    System.out.println(s.nextLine());
}
Run Code Online (Sandbox Code Playgroud)

结果:没有输出

案例2: Scanner(FileInputStream)

Scanner s = new Scanner(new FileInputStream(new File("file")));
while(s.hasNextLine()) {
    System.out.println(s.nextLine());
}
Run Code Online (Sandbox Code Playgroud)

结果:文件内容输出到控制台.

输入文件是包含单个类的java文件.

我以编程方式(在Java中)仔细检查:

  • 该文件存在,
  • 是可读的,
  • 并且具有非零文件大小.

Scanner(File)在这种情况下通常适合我,我不知道为什么现在没有.

java java.util.scanner java-io

14
推荐指数
2
解决办法
5399
查看次数

为什么Java要我再次按Enter键?

我一直试图理解Scanner的工作方式,一直绞尽脑汁.所以这是代码:

Scanner sc = new Scanner(System.in);
String s = sc.nextLine();
String p = sc.nextLine();
System.out.println(s);
System.out.println(p);
System.out.println(sc.hasNextLine());
Run Code Online (Sandbox Code Playgroud)

期待的是:

Love is good  <- press ENTER
Love is blind <- press ENTER
Love is good  <- output
Love is blind <- output
false
Run Code Online (Sandbox Code Playgroud)

什么:

Love is good   <- I press ENTER
Love is blind  <- I press ENTER
Love is good   <- output
Love is blind  <- output
<- press ENTER
true <- output
Run Code Online (Sandbox Code Playgroud)

不明白的是:

  1. 而不是立即打印此行 …

java java.util.scanner

14
推荐指数
5
解决办法
2474
查看次数

如果输入错误的类型,如何防止扫描程序抛出异常?

这是一些示例代码:

import java.util.Scanner;
class In
{
    public static void main (String[]arg) 
    {
    Scanner in = new Scanner (System.in) ;
    System.out.println ("how many are invading?") ;
    int a = in.nextInt() ; 
    System.out.println (a) ; 
    } 
}
Run Code Online (Sandbox Code Playgroud)

如果我运行该程序并给它一个int喜欢4,那么一切都很顺利.

另一方面,如果我回答too many它并不嘲笑我有趣的笑话.相反,我得到了这个(如预期的那样):

Exception in thread "main" java.util.InputMismatchException
    at java.util.Scanner.throwFor(Scanner.java:819)
    at java.util.Scanner.next(Scanner.java:1431)
    at java.util.Scanner.nextInt(Scanner.java:2040)
    at java.util.Scanner.nextInt(Scanner.java:2000)
    at In.main(In.java:9)
Run Code Online (Sandbox Code Playgroud)

有没有办法让它忽略不是整数的条目或重新提示"有多少是入侵?" 我想知道如何做到这两点.

java text-parsing java.util.scanner

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

Scanner#nextFloat的奇怪行为

在Eclipse中运行以下操作最初导致Scanner无法识别控制台中的回车,从而有效阻止了进一步的输入:

price = sc.nextFloat();
Run Code Online (Sandbox Code Playgroud)

在代码之前添加此行会导致Scanner接受0,23(法语表示法)作为浮点数:

Locale.setDefault(Locale.US);
Run Code Online (Sandbox Code Playgroud)

这很可能是由于Windows XP Pro(法语/比利时语)中的区域设置.当代码再次运行时,仍然接受0,23并输入0.23会导致它抛出一个java.util.InputMismatchException.

有关为什么会发生这种情况的任何解释?还有一个解决方法或我应该使用Float#parseFloat

编辑:这演示了Scanner如何使用不同的语言环境(在开头取消注释其中一行).

import java.util.Locale;
import java.util.Scanner;


public class NexFloatTest {

    public static void main(String[] args) {

        //Locale.setDefault(Locale.US);
        //Locale.setDefault(Locale.FRANCE);

        // Gives fr_BE on this system
        System.out.println(Locale.getDefault());

        float price;

        String uSDecimal = "0.23";
        String frenchDecimal = "0,23";

        Scanner sc = new Scanner(uSDecimal);

        try{
            price = sc.nextFloat();
            System.out.println(price);
        } catch (java.util.InputMismatchException e){
            e.printStackTrace();
        }

        try{
            sc = new Scanner(frenchDecimal);
            price = sc.nextFloat();
            System.out.println(price);
        } catch (java.util.InputMismatchException e){
            e.printStackTrace();
        }

        System.out.println("Switching …
Run Code Online (Sandbox Code Playgroud)

java java.util.scanner

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

为什么hasNextLine()永远不会结束?

对不起,如果听起来太简单了.我是Java的新手.

这是我用来检查的一些简单代码hasNextLine().当我运行它时,我无法阻止它.我想如果你没有写任何输入并按下Enter,你就会逃脱while循环.

有人可以向我解释hasNextLine()在这种情况下如何运作?

import java.util.*;

public class StringRaw {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while (sc.hasNextLine()) {
            String str = sc.nextLine();
        }
        System.out.print("YOU'VE GOT THROUGH");
    }
}
Run Code Online (Sandbox Code Playgroud)

java java.util.scanner

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