读取文本文件中的空行

问题描述 投票:0回答:1

如果我想从文本文件中读取文件并将其存储在数组中,则每一行都将转到正确的数组这是文本文件

111111,34,24.5,第一行

222222,53,22.0,第二行

333333,,32.0,第三行

44444,22,12.6,

如果由于出现异常而说“标题丢失”或类似的内容,则该行为空。如果数组length == 4,则按顺序显示行,但是长度小于4,并且缺少行,则抛出异常,但是当我想放置最后一个array [3]时出现错误。看一下是否可以看到将帮助您的错误




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

public class Itry {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
         String [] splitArray = new String[4];  
         String  line = "";  
         String array1, description;
         int number;
         double price;

        // Total sales
         double total = 0;
         Scanner keyboard = new Scanner (System.in);

        // Allow the user to enter the name of text file that the data is stored in
           System.out.println("This program will try to read data from a text file ");
            System.out.print("Enter the file name: ");
            String filename = keyboard.nextLine();

            Scanner fileReader = null;

            try {
                File Fileobject = new File (filename);
                fileReader  = new Scanner (Fileobject);

                System.out.println("\nTransactions"); 
                System.out.println("================");
                while(fileReader.hasNext())
                {

                    // Contains stock code,Quantity,Price,Description
                    line = fileReader.nextLine();// Read a line of data from text file

                     splitArray = line.split(",");
                    // check to make sure there are 4 parts in splitArray 
                    if(splitArray.length == 4)
                    {
                        // remove spaces
                        splitArray[0] = splitArray[0].trim();
                        splitArray[1] = splitArray[1].trim();
                        splitArray[2] = splitArray[2].trim();
                        splitArray[3] = splitArray[3].trim();

                        // Extract each item into an appropriate
                        // variable
                        try {
                         array1 = splitArray[0];
                         number = Integer.parseInt(splitArray[1]);
                         price = Double.parseDouble(splitArray[2]);
                         description = splitArray[3];
                        // Output item
                        System.out.println("Sold "+String.format("%-5d",  number) +
                                String.format("%-12s", description )+ " at "+"£"+
                                String.format("%-5.2f", price));

                        // Compute total
                        total += number * price;
                        } // end of try
                        catch(NumberFormatException e)
                        {
                        System.out.println("Error: Cannot convert to number");
                        }

                  } //end of if 

                     else if (splitArray[0].length()<1) {
                    try {   splitArray[0] = splitArray[0].trim();
                        System.out.println("  Title is missing "+" "+splitArray[1] +""+splitArray[2]+"");
                    }

                    catch(NumberFormatException e)
                    {
                    System.out.println("Error: Cannot convert to number");
                    }
                     }
                     else   if (splitArray[1].length()<=1) {
                            try {   splitArray[1] = splitArray[1].trim();
                            System.out.println(splitArray[0]+" "+" here is missing " +""+splitArray[2] );

                        }
                        catch(NumberFormatException e)
                        {
                        System.out.println("Error: Cannot convert to number");
                        }}

                     else   if (splitArray[2].length()<=1) {
                            try {   splitArray[2] = splitArray[2].trim();
                            System.out.println(splitArray[0]+" "+splitArray[1] +""+" here is missing "+splitArray[3]);

                            }
                        catch(NumberFormatException e)
                        {
                        System.out.println("Error: Cannot convert to number");
                        }}

                            else    if (splitArray[3].length()<=1) {
                            try {   splitArray[3] = splitArray[3].trim();
                            System.out.println(splitArray[0]+" "+splitArray[1] +""+splitArray[2]+"title is missing");
                        }

                        catch(NumberFormatException e)
                        {
                        System.out.println("Error: Cannot convert to number");
                        }}
                }//end of while
                System.out.printf("\nTotal sales: £"+String.format("%-6.2f", total));

             }// end of try block
            catch (FileNotFoundException e) 
            {
                System.out.println("Error - File does not exist");          
            }
    }

}


java arrays file text is-empty
1个回答
1
投票

您可以执行以下操作:

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

public class Main {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        String[] splitArray = new String[4];
        String line = "";
        String array1, description;
        int number;
        double price;

        // Total sales
        double total = 0;
        Scanner keyboard = new Scanner(System.in);

        // Allow the user to enter the name of text file that the data is stored in
        System.out.println("This program will try to read data from a text file ");
        System.out.print("Enter the file name: ");
        String filename = keyboard.nextLine();

        Scanner fileReader = null;

        try {
            File Fileobject = new File(filename);
            fileReader = new Scanner(Fileobject);

            System.out.println("\nTransactions");
            System.out.println("================");
            int count = 1;
            while (fileReader.hasNext()) {

                // Contains stock code,Quantity,Price,Description
                line = fileReader.nextLine();// Read a line of data from text file
                try {
                    if (line != null && line.length() > 0) {
                        splitArray = line.split(",");

                        // check to make sure there are 4 parts in splitArray
                        if (splitArray.length == 4) {
                            // remove spaces
                            splitArray[0] = splitArray[0].trim();
                            splitArray[1] = splitArray[1].trim();
                            splitArray[2] = splitArray[2].trim();
                            splitArray[3] = splitArray[3].trim();

                            // Extract each item into an appropriate variable
                            try {
                                array1 = splitArray[0];
                                number = Integer.parseInt(splitArray[1]);
                                price = Double.parseDouble(splitArray[2]);
                                description = splitArray[3];
                                // Output item
                                System.out.println(
                                        "Sold " + String.format("%-5d", number) + String.format("%-12s", description)
                                                + " at " + "£" + String.format("%-5.2f", price));

                                // Compute total
                                total += number * price;
                            } catch (NumberFormatException e) {
                                System.out.println("Error in line#" + count + ": insufficient/invalid data");
                            }
                        } else {
                            throw new IllegalArgumentException(
                                    "Error in line#" + count + ": insufficient/invalid data");
                        }
                    } else {
                        throw new IllegalArgumentException("Line#" + count + " is empty");
                    }
                } catch (IllegalArgumentException e) {
                    System.out.println(e.getMessage());
                }

                count++;
            } // end of while
            System.out.printf("\nTotal sales: £" + String.format("%-6.2f", total));
        } catch (FileNotFoundException e) {
            System.out.println("Error - File does not exist");
        }
    }
}

示例运行:

This program will try to read data from a text file 
Enter the file name: data2.txt

Transactions
================
Sold 34   Apple        at £24.50
Line#2 is empty
Sold 53   Mango        at £22.00
Line#4 is empty
Error in line#5: insufficient/invalid data
Line#6 is empty
Error in line#7: insufficient/invalid data

Total sales: £1999.00

data2.txt的内容:

111111,34,24.5,Apple

222222,53,22.0,Mango

333333,,32.0,Orange

44444,22,12.6,
© www.soinside.com 2019 - 2024. All rights reserved.