使用单个扫描仪对象扫描多行

Posted

技术标签:

【中文标题】使用单个扫描仪对象扫描多行【英文标题】:Scanning multiple lines using single scanner object 【发布时间】:2014-05-20 17:21:25 【问题描述】:

我是 java 新手,所以如果这听起来对你来说绝对愚蠢,请不要评价

好的,我如何使用单个扫描仪对象输入它

5

你好,你好吗

欢迎来到我的世界

6 7

给那些建议的人

scannerobj.nextInt->nextLine->nextLine->nextInt->nextInt,,,

检查一下,它不起作用!!!

谢谢

【问题讨论】:

它适用于 scannerobj.nextInt->nextLine->nextLine->nextInt->nextLine->nextInt->nextLine.. 看看! 请分享您的代码。 请给出一个通用的答案含义,可用于任何多行集合!!! 而不是这个创建单独的方法来打印值并在那里编写扫描仪代码。然后调用循环中的方法和你的数据 @RafaEl 是的,当且仅当您为输入部分添加额外的 nextLine 时,它​​才有效 【参考方案1】:

默认情况下,扫描仪使用空格作为分隔符。为了使用 forEachRemaining 逐行扫描,请将扫描仪分隔符更改为如下所示的行。

public static void main(String[] args) 
    Scanner scanner = new Scanner(System.in);
    scanner.useDelimiter("\n");
    scanner.forEachRemaining(System.out::println);

【讨论】:

【参考方案2】:

也许我们可以使用这种方法:

for(int i = 0; i < n; i++)
   
       Scanner sc1 = new Scanner(System.in);
       str0[i] = sc1.nextLine();
       System.out.println(str0[i]);
   

也就是说,我们每次在读取 nextLine 之前创建扫描仪对象。 :)

【讨论】:

【参考方案3】:

你也可以只用 lambda 试试:

public static void main(String[] args) 
    Scanner scanner = new Scanner(System.in);
    scanner.forEachRemaining(input -> System.out.println(input));

【讨论】:

【参考方案4】:
public class Sol

    public static void main(String[] args) 

        Scanner sc = new Scanner(System.in); 

       while(sc.hasNextLine())

           System.out.println(sc.nextLine());
       

    

【讨论】:

【参考方案5】:

试试这个代码

Scanner  in    = new Scanner(System.in);

System.out.printf("xxxxxxxxxxxxxxx ");        
String[] input = new String[in.nextInt()];

for (int i = 0; i < input.length; i++) 
    input[i] = in.nextLine();


for (String s : input) 
    System.out.println(s);

【讨论】:

那将无法正常工作,因为in.nextInt() 使用 int 值,而不是换行符。因此,您的第一次 for 循环迭代将立即将该线路制动写入您的输入 [0]。【参考方案6】:
public static void main(String[] args) 
    Scanner  in    = new Scanner(System.in);

    System.out.printf("Please specify how many lines you want to enter: ");        
    String[] input = new String[in.nextInt()];
    in.nextLine(); //consuming the <enter> from input above

    for (int i = 0; i < input.length; i++) 
        input[i] = in.nextLine();
    

    System.out.printf("\nYour input:\n");
    for (String s : input) 
        System.out.println(s);
    

示例执行:

Please specify how many lines you want to enter: 3
Line1
Line2
Line3

Your input:
Line1
Line2
Line3

【讨论】:

谢谢,对这一行加一分in.nextLine(); //consuming the &lt;enter&gt; from input above

以上是关于使用单个扫描仪对象扫描多行的主要内容,如果未能解决你的问题,请参考以下文章

Golang慢扫描()多行

扫描仪帮助 - 使用 2 种扫描仪方法和单个 getter 方法

MySQL select in join 子句扫描太多行

如何使用单个 API 调用扫描 HappyBase 中的行集?

使用 \R 模式使用 Java 扫描仪(缓冲区边界问题)

OpenCV实战——使用邻居访问扫描图像