Java 我在尝试这个问题时输出错误,

Java 我在尝试这个问题时输出错误,,java,Java,程序应从文本文件中读取匹配数据。文件中的每一行都包含特定匹配的数据。文件中每行的格式如下: 主队\名称:客场\名称:主队\得分:客场\得分 请注意冒号字符(:)如何用于分隔输入的不同部分(字段分隔符) 以下是文件中典型数据行的示例 Arsenal : Spurs : 2 : 1 Everton : Liverpool : 1 : 1 Huddersfield : Chelsea: 2 : 1 程序应提示用户输入匹配数据文件的名称,然后读取、存储和处理文件中存储的每行匹配数据,并以指定格式将数据

程序应从文本文件中读取匹配数据。文件中的每一行都包含特定匹配的数据。文件中每行的格式如下:

主队\名称:客场\名称:主队\得分:客场\得分

请注意冒号字符(:)如何用于分隔输入的不同部分(字段分隔符)

以下是文件中典型数据行的示例

Arsenal : Spurs : 2 : 1
Everton : Liverpool : 1 : 1
Huddersfield : Chelsea: 2 : 1
程序应提示用户输入匹配数据文件的名称,然后读取、存储和处理文件中存储的每行匹配数据,并以指定格式将数据输出到控制台(即,这不仅仅是读取和显示文件中存储的原始数据)

匹配数据必须以以下格式显示

Home team       Score       Away team       Score
=========       =====       =========       ======
Arsenal           2         Spurs             1
Everton           1         Liverpool         1
Huddersfield      2         Chelsea           1
我已经完成了代码,但输出结果并没有如问题中所示,直到:

import  java.io.FileNotFoundException;
import java.util.Scanner;

import java.io.File;
    public class FootallResultsGenerator {


        public static void main(String[] args) throws FileNotFoundException {
            // TODO Auto-generated method stub

            String[] splitarray=new String[4];
            String filename;
            String line;
            String hometeam;
            String homescore;
            String awayteam;
            String awayscore;


            Scanner obj=new Scanner(System.in);
            System.out.println("Enter the name of the file");
            filename=obj.nextLine();
            Scanner filereader=null;
            try {
                File fileobject=new File(filename);
                filereader=new Scanner(fileobject);
                System.out.println("Home team\t"+"Score\t"+"Away team\t"+"Score");
                System.out.println("==========\t"+"======\t"+"=========\t"+"======");

                while(filereader.hasNext())
                {
                 line=filereader.nextLine();
                 splitarray=line.split(":");
                 if(splitarray.length==4) {
                    hometeam=splitarray[0];
                    homescore=splitarray[2];

                    awayteam=splitarray[1];
                    awayscore=splitarray[3];
                    System.out.println(hometeam+"\t"+homescore+"\t"+awayteam+"\t"+awayscore);
                 }


                }
            }

                catch(FileNotFoundException e)
                {
                System.out.println("Error:File Not Found.");
                }


                }

            }
它应该显示:

Home team         Score     Away team       Score
=========         =====     =========       ======
Manchester United   2       Spurs             1
Everton             1       Liverpool         1
Huddersfield        2       Chelsea           1
而是显示以下内容:

Home team       Score       Away team               Score
=========       =====       =========           ======
Manchester United         2         Spurs             1
Everton           1         Everton           1
Huddersfield              2         Chelsea           1

您可以使用以下格式:

System.out.printf("   %-13s  %-10s%-15s%-5s","Home team","Score","Away team","Score\n"); 
System.out.println("===============   =====     =========      =====");
System.out.printf("%-17s   %-2s%15s %9s",hometeam,homescore,awayteam,awayscore);
输出:

Home team         Score     Away team       Score
=========         =====     =========       ======
Manchester United   2       Spurs             1

请务必让我知道这是否是您正在寻找的内容,如果不是,我将根据您的要求对其进行编辑。

您可以使用以下格式:

System.out.printf("   %-13s  %-10s%-15s%-5s","Home team","Score","Away team","Score\n"); 
System.out.println("===============   =====     =========      =====");
System.out.printf("%-17s   %-2s%15s %9s",hometeam,homescore,awayteam,awayscore);
输出:

Home team         Score     Away team       Score
=========         =====     =========       ======
Manchester United   2       Spurs             1

请务必让我知道这是否是您想要的,如果不是,我将根据您的要求编辑它。

查看有关格式化字符串的相关答案。简单打印的主要问题是字符串的长度可变。不能任意假定所有字符串的长度相同,并且一个制表符足以确保在列中对齐。如果您想确保对齐,您需要手动或通过内置Java打印格式填充到特定长度。几天前,我的回答非常类似于@lakshandisanayake,他没有编写任何代码,因为我已经编写了一些代码。问题是一样的,但我的问题是输出,而不是全部内容。请查看有关格式化字符串的相关答案。简单打印的主要问题是字符串的长度可变。不能任意假定所有字符串的长度相同,并且一个制表符足以确保在列中对齐。如果您想确保对齐,您需要手动或通过内置Java打印格式填充到特定长度。几天前,我的回答非常类似于@lakshandisanayake,他没有编写任何代码,因为我已经编写了一些代码。问题是一样的,但我有输出的问题,不是所有的东西,这正是我要找的,这正是我要找的