Question

In: Computer Science

This is my java method that is suppose to take data from a file(String, String, Double,...

This is my java method that is suppose to take data from a file(String, String, Double, Int ) and load that data into an object array. This is what I have and when I try to display the contents of this array it prints a "@" then some numbers and letters. which is not the correct output. any help correcting my method would be much appreciated.

public void loadInventory(String fileName) {

String inFileName = fileName;

String id = null;

String name = null;

double price = 0;

int quantity = 0;

int count = 0;

try {

Scanner infile = new Scanner(new FileInputStream(inFileName));

count = 0;

while (infile.hasNext() && count < 100)

{

id = infile.next();

name = infile.next();

price = infile.nextDouble();

quantity = infile.nextInt();

Item newItemList = new Item(id, name, price, quantity);

itemList[count] = newItemList;

++count;

}//end of hasNext loop

infile.close();

}//end of try

catch (IOException ex)

{

count = -1;

System.out.printf("\nNow ya done goofed " + ex +"\n");

}//end of catch

}

Solutions

Expert Solution

Issue:
--------
If the contents of this array it prints a "@" then some numbers and letters.
Then you are tying to print Item object without having a toString() method in the Item class.

In other words, If you do not have toString() method in a class and you are trying to print the object of such class
then it prints the address of object. Address looks like starts with @ and then some numbers and letter.

Fix:
------
Add a toString method in Item class.
Check the example below.



public class Item {
    private String id;
    private String name;
    private double price;
    private int quantity;

    public Item(String id, String name, double price, int quantity) {
        this.id = id;
        this.name = name;
        this.price = price;
        this.quantity = quantity;
    }

    public String toString() {
        return "Item{" +
                "id='" + id + '\'' +
                ", name='" + name + '\'' +
                ", price=" + price +
                ", quantity=" + quantity +
                '}';
    }
}



import java.io.FileInputStream;
import java.io.IOException;
import java.util.Random;
import java.util.Scanner;

public class TestCode {
    static Item itemList[] = new Item[100];
    public static void loadInventory(String fileName) {
        String inFileName = fileName;
        String id = null;
        String name = null;
        double price = 0;
        int quantity = 0;
        int count = 0;
        try {
            Scanner infile = new Scanner(new FileInputStream(inFileName));
            count = 0;
            while (infile.hasNext() && count < 100)
            {
                id = infile.next();
                name = infile.next();
                price = infile.nextDouble();
                quantity = infile.nextInt();
                Item newItemList = new Item(id, name, price, quantity);
                itemList[count] = newItemList;
                ++count;
            }//end of hasNext loop
            infile.close();
        }//end of try
        catch (IOException ex)
        {
            count = -1;
            System.out.printf("\nNow ya done goofed " + ex +"\n");
        }//end of catch
    }

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String fn;
        System.out.println("Enter file name: ");
        fn = scanner.next();
        loadInventory(fn);

        for(int i = 0;i<itemList.length;i++){
            System.out.println(itemList[i]);
        }
    }
}


Related Solutions

Assignment: Create data file consisting of integer, double or String values. Create unique Java application to...
Assignment: Create data file consisting of integer, double or String values. Create unique Java application to read all data from the file echoing the data to standard output. After all data has been read, display how many data were read. For example, if 10 integers were read, the application should display all 10 integers and at the end of the output, print "10 data values were read" My issue is displaying how many integers were read and how many strings...
#Java I am reading from the txt file and I put everytihng inside of the String[],...
#Java I am reading from the txt file and I put everytihng inside of the String[], like that: String[] values = str.split(", "); But, now I have to retrieve the data from it one by one. How can I do it? Here is the txt file: OneTime, finish the project, 2020-10-15 Monthly, wash the car, 2020-11-10 Thanks!
Code in Java Write a recursive method, reverseString, that accepts a String and returns the String...
Code in Java Write a recursive method, reverseString, that accepts a String and returns the String reversed. Write a recursive method, reverseArrayList, that accepts an ArrayList of Strings and returns the ArrayList in reserve order in reserve order of the input ArrayList. Write a main method that asks the user for a series of Strings, until the user enters “Done” and puts them in an ArrayList. Main should make use to reverseArrayList and reverseString to reverse each String in the...
JAVA The class will have a constructor BMI(String name, double height, double weight). The class should...
JAVA The class will have a constructor BMI(String name, double height, double weight). The class should have a public instance method, getBMI() that returns a double reflecting the person's BMI (Body Mass Index = weight (kg) / height2 (m2) ). The class should have a public toString() method that returns a String like Fred is 1.9m tall and is 87.0Kg and has a BMI of 24.099722991689752Kg/m^2 (just print the doubles without special formatting). Implement this class (if you wish you...
java method for dequeue write the “dequeue” method for a queue of type double. If the...
java method for dequeue write the “dequeue” method for a queue of type double. If the queue is empty return 0.0. Make sure to change the links properly ensure that the data structure remains a queue. use the code provided below public class Q04 { public class ListNode//Public for testing purposes { public double data; public ListNode link; public ListNode(double aData, ListNode aLink) { data = aData; link = aLink; } } public ListNode head;//Public for testing purposes public ListNode...
Java Programming CS 209 Data Structure 1. Create a method that takes an ArrayList of String...
Java Programming CS 209 Data Structure 1. Create a method that takes an ArrayList of String and returns a copy of that ArrayList with no duplicates. The relative ordering of elements in the new ArrayList should be the same. Sample Input: {"qwerty", "asdfgh", "qwer", "123", "qwerty", "123", "zxcvbn", "asdfgh"} Sample Output: {"qwerty", "asdfgh", "qwer", "123", "zxcvbn"}
Write in Java: Write a method called: public static String[] noIdenticalCombine(String[] array1, String[] array2) { //...
Write in Java: Write a method called: public static String[] noIdenticalCombine(String[] array1, String[] array2) { // instructions: returns an array that contains all the Strings in array1 and array2 but without repetition. order does not matter, but it will return array1's elements and then array2's element that are not in array1. Assume there are no duplicates are in array1 and array2. Could use count which is how many str there are in array2, where !contains(array1, str). May an array of...
java/netbeans Write a recursive method, reverseString, that accepts a String and returns the String reversed. Write...
java/netbeans Write a recursive method, reverseString, that accepts a String and returns the String reversed. Write a recursive method, reverseArrayList, that accepts an ArrayList of Strings and returns an ArrayList in reserve order of the input ArrayList. Write a main method that asks the user for a series of Strings, until the user enters “Done” and puts them in an ArrayList. Main should make use to reverseArrayList and reverseString to reverse each String in the ArrayList and then reverse the...
In java write a method that will take an array and change it into a linkedlist...
In java write a method that will take an array and change it into a linkedlist and then display it in the main method
binarySearchLengths(String[] inArray, String search, int start, int end) This method will take in a array of...
binarySearchLengths(String[] inArray, String search, int start, int end) This method will take in a array of strings that have been sorted in order of increasing length, for ties in the string lengths they will be in alphabetical order. The method also takes in a search string and range of indexes (start, end). The method will return a String formatted with the path of search ranges followed by a decision (true or false), see the examples below. Example 1: binarySearchLengths({"a","aaa","aaaaa"},"bb",0,2) would...
ADVERTISEMENT
ADVERTISEMENT
ADVERTISEMENT