在Java(Homewor)中拆分文件输入和格式化输出

在Java(Homewor)中拆分文件输入和格式化输出,java,string,file-io,java.util.scanner,token,Java,String,File Io,Java.util.scanner,Token,所以我班的实验任务是阅读一个文本文件,其中有一行(任意行数)上的城市名称和一些温度,例如: 蒙哥马利15 9.5 17 打印名字和平均温度。打印时,名称必须在行的左侧,平均值应在小数点后的两位数字处打印,在行的右侧。我可以假设没有名字是30多个字符,平均值可以打印在10个字符宽的字段中(包括小数点) 这是我到目前为止所拥有的 import java.util.Scanner; import java.io.*; import java.io.FileNotFoundException; impo

所以我班的实验任务是阅读一个文本文件,其中有一行(任意行数)上的城市名称和一些温度,例如:

蒙哥马利15 9.5 17

打印名字和平均温度。打印时,名称必须在行的左侧,平均值应在小数点后的两位数字处打印,在行的右侧。我可以假设没有名字是30多个字符,平均值可以打印在10个字符宽的字段中(包括小数点)

这是我到目前为止所拥有的

import java.util.Scanner;
import java.io.*;
import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.Formatter;

public class readFile2
{
    public static void main(String[] args) throws IOException
    {
        FileReader a = new FileReader("places.txt");

        StreamTokenizer b = new StreamTokenizer(a);

        ArrayList<Double> c = new ArrayList<Double>();

        /*System.out.println(
            String.format("%-10s:%10s", "ABCD", "ZYXW")); 
         **I found this to format an output. */

        double count = 0;

        while(b.nextToken() != b.TT_EOF);
        {
            if(b.ttype == b.TT_WORD)
        {
            System.out.print(b.sval);
        }
            if(b.ttype == b.TT_NUMBER)
            {
                c.add(b.nval);
                count ++;
            }

            double totaltemp = 0;                   // I need to figure out how to put
                                                    // this inside of an if statement
            for(int i = 0; i < c.size(); i++)       // that can tell when it reaches
            {                                       // the last number/the end of the line
                totaltemp = c.get(i) + totaltemp;   //
                count++;                            //
            }                                       //
                                                    //
            System.out.print(totaltemp/count);      //
        }
    }
}
import java.util.Scanner;
导入java.io.*;
导入java.io.FileNotFoundException;
导入java.util.ArrayList;
导入java.util.Formatter;
公共类readFile2
{
公共静态void main(字符串[]args)引发IOException
{
FileReader a=新的FileReader(“places.txt”);
StreamTokenizer b=新的StreamTokenizer(a);
ArrayList c=新的ArrayList();
/*System.out.println(
字符串格式(“%-10s:%10s”、“ABCD”、“ZYXW”);
**我发现这是用来格式化输出的*/
重复计数=0;
while(b.nextToken()!=b.TT_EOF);
{
if(b.ttype==b.TT_字)
{
系统输出打印(b.sval);
}
if(b.ttype==b.TT\u编号)
{
c、 添加(b.nval);
计数++;
}
double totaltemp=0;//我需要弄清楚如何将
//这是if语句的内部
for(inti=0;i
第二部分是修改程序,使cty的名称可以由多个单词组成(例如,“New York”)


我非常感谢所有的帮助和建议:)

所有的名字都是一个词吗?是的。但对于第二部分,名称可能是两个字,它始终是MS Word(docx)文件还是纯文本?起初是docx,但现在只是纯文本(places.txt),我已经更新了代码以反映这一点。我会在那里更新它,在这种情况下,我会想象你会逐行阅读文本文件(有很多这样的例子)。然后我将使用
String#split
并使用空格作为分隔符(这方面也有很多例子)。遍历新数组,知道(1)第一个元素始终是单词(仍应进行错误检查)(2)第二个元素可能是单词,也可能不是单词,(3)其余的是您正在查找的数字。