Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

I have a program that reads a file and then creates objects from the contents of

ID: 3587063 • Letter: I

Question

I have a program that reads a file and then creates objects from the contents of the file. How can I create a linked list of objects and use it with the package class instead of creating and using an array of objects? I am not allowed to use any arrays of objects or any java.util. lists in this program.

Runner class:

import java.util.Scanner;

import java.io.*;

class Runner {

public static Package[] readFile() {

try {

File f = new File("input.txt");

Scanner sc = new Scanner(f);

double l, h, w;

int count = 0;

while(sc.hasNext()){

l = sc.nextDouble();

h = sc.nextDouble();

w = sc.nextDouble();

sc.nextLine();

count++;

}

}

}

catch (Exception e){

e.printStackTrace();

}

return array;

}

public static void getLargestPack(Package[] array) {

//finding largest package

Package maxp = array[0];

int maxpind = 0;

for(int i = 1; i < array.length; i++){

if(array[i].getVolume() > maxp.getVolume()) {

maxp = array[i];

maxpind = i;

}

}

System.out.println("index of largest package is " + maxpind);

maxp.printDimensions();

System.out.println("Volume: "+maxp.getVolume());

}

public static void main (String[] args) throws java.lang.Exception {

node newN = null;

node head = null;

node current = null;

Package[] array = readFile();

getLargestPack(array);

LinkedList = new LinkedList(

//cubic and non cubic packages

int c = 0, nc = 0;

for(int i = 0; i < array.length; i++){

if(array[i].isCube()) c++;

else nc++;

}

System.out.println("number of cubic packages are: " + c);

System.out.println("number of non cubic packages are: " + nc);

//details of cubic packages

float sum_vol = 0;

for(int i = 0; i < array.length; i++){

if(array[i].isCube()){

array[i].printDimensions();

sum_vol += array[i].getVolume();

}

}

System.out.println("average volume is: " + sum_vol/c);

}

}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

Package Class:

import java.util.*;

import java.lang.*;

import java.io.*;

class Package{

private double l, h, w;

public Box (double l, double h, double w, int ) {

this.l = l;

this.h = h;

this.w = w;

}

public boolean isCube() {

return l == h && h == w;

}

public double getVolume() {

return l * w * h;

}

public void printDimensions() {

System.out.println("Dimensions in length, height, width: " + l + ", " + h + ", " + w);

}

}

Explanation / Answer

Please find the below code without using util pacakge.

Runner.class

package com.list;

import java.util.Scanner;

import java.io.*;

class Runner {

public static void readFile() {

try {

  

}

catch (Exception e){

e.printStackTrace();

}

//return array;

}

public static void main (String[] args) throws java.lang.Exception {

/*node newN = null;

node head = null;

node current = null;*/

LinkedList Llist = new LinkedList();

File f = new File("C:/Santhosh/input.txt");

Scanner sc = new Scanner(f);

double l, h, w;

int count = 0;

while(sc.hasNext()){

l = sc.nextDouble();

h = sc.nextDouble();

w = sc.nextDouble();

Package p = new Package(l, h, w);

DataItems data = new DataItems(count,p);

Llist.insertNode(data);

//sc.nextLine();

count++;

}

Llist.displayList();

//readFile();

Llist.getLargestPack();

//LinkedList = new LinkedList(

Llist.cubic();

}

}

Package.java

package com.list;

import java.util.Scanner;

import java.io.*;

class Runner {

public static void readFile() {

try {

  

}

catch (Exception e){

e.printStackTrace();

}

//return array;

}

public static void main (String[] args) throws java.lang.Exception {

/*node newN = null;

node head = null;

node current = null;*/

LinkedList Llist = new LinkedList();

File f = new File("C:/Santhosh/input.txt");

Scanner sc = new Scanner(f);

double l, h, w;

int count = 0;

while(sc.hasNext()){

l = sc.nextDouble();

h = sc.nextDouble();

w = sc.nextDouble();

Package p = new Package(l, h, w);

DataItems data = new DataItems(count,p);

Llist.insertNode(data);

//sc.nextLine();

count++;

}

Llist.displayList();

//readFile();

Llist.getLargestPack();

//LinkedList = new LinkedList(

Llist.cubic();

}

}

Node.java

package com.list;
public class Node{

// immutable class representing head node of linked list

private DataItems dataItems;
private Node nextNode;

public void setNextNode(Node _nextNode){
this.nextNode=_nextNode;
}

public Node getNextNode(){
return nextNode;
}

public DataItems getDataItems(){
return dataItems;
}

public void setDataItems(DataItems _dataItems){
this.dataItems=_dataItems;
}

}

HeadNode.java

package com.list;

public class HeadNode{

// immutable class representing head node of linked list

Node nextNode;

public void setNextNode(Node _nextNode) {

nextNode=_nextNode;

}

public Node getNextNode() {

return nextNode;

}

}

DataItems.java

package com.list;

public class DataItems{

private int key;
private Package p;

public DataItems(int _key, Package p){
this.key=_key;
this.p=p;
}

public int getKey() {
return key;
}

public Package getP() {
return p;
}

public String toString() {
return "("+getKey()+","+getP()+")";
}

}

LinkedList.java

package com.list;

public class LinkedList{

HeadNode head;

public LinkedList(){

head = new HeadNode();

}

// insert node at the beginning of the list

public void insertNode(DataItems _data){

Node newNode = new Node();

newNode.setDataItems(_data);

Node nextNode = head.getNextNode();

head.setNextNode(newNode);

newNode.setNextNode(nextNode);

}

// delete node at the beginning of the list

public void deleteNode(){

Node toBeDeletedNode = head.getNextNode();

if(toBeDeletedNode!=null) {

Node nextNode = toBeDeletedNode.getNextNode();

head.setNextNode(nextNode);

toBeDeletedNode.setNextNode(null);

} else {

System.out.println("No nodes to be deleted");

}

}

// display all nodes data

public void displayList(){

Node nodes = head.getNextNode();

int i=0;

while(nodes!=null) {

DataItems data = nodes.getDataItems();

System.out.println("Node "+i+" : "+data.toString());

nodes = nodes.getNextNode();

i++;

}

}

// reverse order of linked list

public void reverseLinkedList(){

int sizeOfList = size();

Node lastNode = nodeAtIndex(sizeOfList-1);

Node snode, tnode;

for(int i=sizeOfList-2;i>=0;i--){

snode = nodeAtIndex(i);

tnode = snode.getNextNode();

tnode.setNextNode(snode);

}

nodeAtIndex(0).setNextNode(null);

head.setNextNode(lastNode);

}

// reverse order of linked list

public void searchKey(int _key){

int i=0;

DataItems data = dataAtNodeIndex(i);

while(data!=null){

if(data.getKey()== _key){

System.out.println("Node at index : "+i+" has data item : "+data.toString());

}

i++;

data = dataAtNodeIndex(i);

}

}

// insert a node at index

public void insertNodeAtIndex(int _index, DataItems _data){

Node newNode = new Node();

newNode.setDataItems(_data);

if(_index==0) {

insertNode(_data);

} else {

Node prevNode = nodeAtIndex(_index-1);

if(prevNode!=null) {

Node nextNode = prevNode.getNextNode();

newNode.setNextNode(nextNode);

prevNode.setNextNode(newNode);

}

}

}

// delete a node at index

public void deleteNodeAtIndex(int _index){

if(_index==0) {

deleteNode();

} else {

Node prevNode = nodeAtIndex(_index-1);

if(prevNode!=null) {

Node targetNode = prevNode.getNextNode();

Node nextNode = targetNode.getNextNode();

targetNode.setNextNode(null);

prevNode.setNextNode(nextNode);

}

}

}

// return data item at particular node

public DataItems dataAtNodeIndex(int _index){

Node nodes = nodeAtIndex(_index);

if(nodes!=null) {

return nodes.getDataItems();

} else {

return null;

}

}

// return node at particular index

private Node nodeAtIndex(int _index){

if(_index<0) {

return null;

} else {

Node nodes = head.getNextNode();

int i=0;

while(i<_index && nodes!=null) {

nodes = nodes.getNextNode();

i++;

}

return nodes;

}

}

// return the size of linked list

public int size() {

int count=0;

Node nodes = nodeAtIndex(count);

while(nodes!=null) {

nodes = nodeAtIndex(++count);

}

return count;

}

public Package getData(){

Node nodes = head.getNextNode();

DataItems data = nodes.getDataItems();

return data.getP();

}

public void getLargestPack() {

//finding largest package

Node nodes = head.getNextNode();

DataItems data = nodes.getDataItems();

Package maxp = data.getP();

int maxpind = 0;

int i=0;

while(nodes!=null) {

data = nodes.getDataItems();

//System.out.println("Node "+i+" : "+data.toString());

Package p1 = data.getP();

if(p1.getVolume() > maxp.getVolume()) {

maxp = p1;

maxpind = i;

}

nodes = nodes.getNextNode();

i++;

}

System.out.println("index of largest package is " + maxpind);

maxp.printDimensions();

System.out.println("Volume: "+maxp.getVolume());

}

public void cubic(){

//cubic and non cubic packages

int c = 0, nc = 0;

int i=0;

Node nodes = head.getNextNode();

float sum_vol = 0;

while(nodes!=null) {

DataItems data = nodes.getDataItems();

//System.out.println("Node "+i+" : "+data.toString());

Package p1 = data.getP();

p1.printDimensions();

if(p1.isCube()) {

c++;

//p1.printDimensions();

sum_vol += p1.getVolume();

}

else nc++;

nodes = nodes.getNextNode();

i++;

}

System.out.println("number of cubic packages are: " + c);

System.out.println("number of non cubic packages are: " + nc);

System.out.println("average volume is: " + sum_vol/c);

}

}

Thank you .............all the best.....