打印多行文本文档

时间:2014-03-13 23:10:05

标签: java

我遇到的问题是我的代码没有打印出文本文档中的所有内容。我的任务是获取.txt文件中的内容并输入一个新的.txt文件,我想你可以说"发烧友。"

这是我给出的文本文件。

  托马斯史密斯3 2.25 44

     

Kim Johnson 2 55.60 35

     

John Doe 33 2.90 21

     

Karen Java 1 788.99 65

这是"花式"输出我需要(只需输出所有输出)。

  

第一个名字是:托马斯

     

姓氏是:史密斯

     

购买的商品总数为:3

     

客户总数为:6.75

     

客户的总舍入(演员)是:6

     

客户的年龄是:44

我想我一直盯着它看这么久我只是在看它......

Scanner inFile = new Scanner(new FileReader("customer.txt"));

    double options;
    System.out.println("How would you like to input your data?\n1 Input information from customer.txt\n2 Input information from the keyboard.");
    options = console.nextDouble();


    if (options == 1){

        //Variable to store first name
        String firstName;
        //Variable to store last name
        String lastName;

        //Variable to store how many items bought
        int itemsBought;
        //Variable to store the price per item
        double itemPrice; 
        //Variable to store their age
        int age;


        while (inFile.hasNext()){


            //Gets the first name
            firstName = inFile.next();
            //Gets the last name
            lastName = inFile.next();

            //Gets number of items bought
            itemsBought = inFile.nextInt();
            //Gets the price per item
            itemPrice = inFile.nextDouble();
            // Gets their age
            age = inFile.nextInt(); 


            PrintWriter outFile = new PrintWriter("programOutputFile.txt");

            outFile.println("The customers first name is: " + firstName); 
            outFile.println("The customers last name is: " + lastName);
            outFile.println("The customer bought " + (int)itemsBought + " items.");
            outFile.println("The customers total is " + itemPrice);
            outFile.println("The total cost rounded " + (int)itemPrice);
            outFile.println("The customers age is: " + (int)age);


            outFile.close();

        }   


    }
    else if (options == 2) {

        String firstname;
        String lastname;
        int items = 0;
        double price = 0;
        int age1 = 0;

        int counter; //loop control variable
        counter = 0;

        int limit; //store the number of items
        System.out.print("Enter the number of entries you have "); //Line 1
        limit = console.nextInt(); //Line 2



    while (counter < limit) {

        // It is asking for the user to input their first name 

                    System.out.println("Please tell me what is your first name? ");
                    firstname = console.next();

                    // It is asking for the user to input their last name
                    System.out.println("What is your last name? ");
                    lastname = console.next();

                    // It is asking for the number of items they purchased
                    System.out.println("How many items did your purchase? ");
                    items = console.nextInt();

                    // Here it is asking for the total price they paid

                    System.out.println("What was the cost of each item? ");
                    price = console.nextDouble();

                    System.out.println("How old are you? ");
                    age1 = console.nextInt();

                    double total = items * price;


        counter++;

        if (counter != 0){
            //Outputs the length of Firstname
            System.out.println("The name is " + firstname.length() + " letters in your first name.");

            //Outputs the first letter of LastName
            System.out.println("The first letter of your last name is: " + lastname.charAt(0));

            //Outputs the number of items bought
            System.out.println("You bought " + items + " items.");

            //Outputs Price
            System.out.println("Your total price was " + total);

            //Outputs the Price as a int number
            System.out.println("Your total price rounded is " + (int)total);

            //Outputs the age
            System.out.println("They are " + age1 + " years old.");


            PrintWriter outFile = new PrintWriter("programOutputFile.txt");

            //Outputs the information given above into a .txt file
            outFile.println("The customers first name is: " + firstname); 
            outFile.println("The customers last name is: " + lastname);
            outFile.println("The customer bought " + (int)items + " items.");
            outFile.println("The customers total is " + total);
            outFile.println("The total cost rounded " + (int)total);
            outFile.println("The customers age is: " + (int)age1);

            outFile.close();



        }
        else
            System.out.println("Invalid. Please try again.");



        }


    }


    inFile.close();




}

到目前为止,它将打印出Karen Java的系列,而不是Karen,John,Kim和Thomas的。我有选项2完成,但我又遇到了同样的问题,它只打印出最后一个输入。

任何建议都将不胜感激!

1 个答案:

答案 0 :(得分:2)

每次编写时,都会在循环中重新打开文件。这样可以覆盖文件的任何先前内容(您刚刚编写的上一个输出)。在while循环之前声明outfile并在之后关闭它。