如何从单个文本文件中同时打印字符串和整数?

Posted

技术标签:

【中文标题】如何从单个文本文件中同时打印字符串和整数?【英文标题】:How do I print both Strings and Ints from a single text file? 【发布时间】:2022-01-06 00:38:09 【问题描述】:

我有一个文件,如下所示,但还有几个名称(每个单词和数字都在单独的行上): 詹姆士 123 343 355 凯尔 136 689 680

我一直在尝试将所有这些作为字符串读取,并使用 parseInt 将它们转换为整数,因为我需要找到名称后面数字的平均值。但它没有用,我很好奇如何在 Java 中打印这个文件。谢谢

【问题讨论】:

【参考方案1】:

让我们假设在每个名称下它们可以是可变数量的数值。我们想要做的是,虽然每一行都是数字,但继续将它们加在一起并跟踪我们读过的行数,当该行变为String 时可能会将其打印出来并设置下一个序列。

老实说,我认为人们认为Scanner 仅对读取用户输入或文件有用,而忘记了他们可以使用多个Scanners 来解析相同的内容(或提供帮助)

例如。我设置Scanner 来读取文件的每一行(作为String)。然后我设置第二个Scanner(对于每一行)并测试它是否是int,并采取适当的措施,例如......

import java.util.Scanner;

public class Test 

    public static void main(String[] arg) 
        // Just beware, I'm reading from an embedded resource here
        Scanner input = new Scanner(Test.class.getResourceAsStream("/resources/Test.txt"));
        String name = null;
        int tally = 0;
        int count = 0;
        while (input.hasNextLine()) 
            String line = input.nextLine();
            Scanner parser = new Scanner(line);
            if (parser.hasNextInt()) 
                tally += parser.nextInt();
                count++;
             else 
                if (name != null) 
                    System.out.println(name + "; tally = " + tally + "; average = " + (tally / (double) count));
                

                name = parser.nextLine();
                tally = 0;
                count = 0;
            
        
        if (name != null) 
            System.out.println(name + "; tally = " + tally + "; average = " + (tally / (double) count));
        
    

根据您的示例数据,打印类似...

James; tally = 821; average = 273.6666666666667
Kyle; tally = 1505; average = 501.6666666666667

【讨论】:

【参考方案2】:

这是您要找的吗?

    import java.util.*;

    public class Main
    
        public static void main(String[] args) 
            //System.in is a standard input stream
            Scanner sc= new Scanner(System.in);    
            String name=sc.next();
            int a= sc.nextInt();
            int b= sc.nextInt();
            int c= sc.nextInt();
            int d=(a+b+c)/3;
            System.out.println("Average= " +d);
        
    

【讨论】:

以上是关于如何从单个文本文件中同时打印字符串和整数?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 C 中使用参数从文本文件中打印字符?

尝试从文本文件中打印名字,但同时获取名字和中间名 [重复]

如何将文本文件的内容转换为单个变量? (java) [重复]

如何在用户输入中识别名称(从文本文件中识别,然后打印名称)

如果使用JavaScript同时包含整数和字符串,如何从CRM的文本字段的单行中检索整数值

如何从单个文本文件中提取不同的文章?