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

Hello, I\'m in need of some help. I have a program almost done and I could use s

ID: 3828098 • Letter: H

Question

Hello, I'm in need of some help. I have a program almost done and I could use some help to finish part of the requirement. I already have the first one done, its the second one I don't have done. Pretty much the program takes in numbers from the users, allows us to save the list made, and able to load the list back up. But it is also supposed to remove odd numbers, and right now it doesn't remove the odd numbers. Help please! Thank you!

"1. complete the NumberList class: fix the removeOdd() method so that it removes all odd numbers from the list.

2. complete the NumberListTest class: write a “good” unit test for the removeOdd() method so that we can make sure it works as it is supposed to."

//NumberList.java

package inclass;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class NumberList {
   private List<Integer> numbers;

   public NumberList() {
       numbers = new ArrayList<>();
   }

   public int add(int a, int b) {
       return a + b;
   }

   public void add(int i) {
       numbers.add(i);
   }

   /*
   * The remove(int) method will remove the specified value from the numbers
   * list and return true - if an item was removed false - if nothing was
   * removed.
   */
   public boolean remove(int i) {
       Integer nr = i;
       if (numbers.contains(nr)) {
           return numbers.remove(nr);
       } else
           return false;
   }

   /*
   * The getNumbers method will return a copy of the numbers list
   */
   public List<Integer> getNumbers() {
       return new ArrayList<>(numbers);
   }

   /*
   * The isEqual(List<Integer>) method will compare an input list with the
   * numbers list and return true - if the two are equal false - if they are
   * not equal
   */
   public boolean isEqual(List<Integer> list) {
       return numbers.equals(list);
   }

   /*
   * The removeOdd method should remove all odd numbers from the numbers list
   * and return true - if one or more items were removed false - if nothing
   * was removed.
   */
   public boolean removeOdd() {
       boolean result = false;
       Iterator<Integer> itera = numbers.iterator();

       while (itera.hasNext()) {

           Integer in = itera.next();

           if (in.intValue() % 2 == 1) {
               itera.remove();
               result = true;
           }
       }
       return result;
   }

}

---------------------

//MyNumber.java

package serial;

import java.io.Serializable;

public class MyNumber implements Serializable {

   private static final long serialVersionUID = 2L;

   private int number;

   public MyNumber(int number) {

       super();

       this.number = number;

   }

   public int getNumber() {

       return number;

   }

   public void setNumber(int number) {

       this.number = number;

   }

   @Override

   public String toString() {

       return "" + number;

   }
}

--------------------------------

//SerializationExample.java

package serial;

import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTextField;

public class SerializationExample extends JFrame implements ActionListener {

   private static final long serialVersionUID = 1L;
   private JButton clearbutton;
   private JTextField ytextfield;
   private JButton savebutton;
   private JButton loadbutton;
   private MyNumber mynumber;

   private void initializeWindow(String title) {
       setTitle(title);
       setBounds(100, 100, 400, 300);
       setLayout(null);
       getContentPane().setBackground(Color.YELLOW);

       ytextfield = new JTextField();
       ytextfield.setBounds(50, 20, 100, 25);
       add(ytextfield);
       ytextfield.setVisible(true);
       ytextfield.addActionListener(this);

       clearbutton = new JButton("Clear");
       clearbutton.setBounds(250, 20, 90, 25);
       add(clearbutton);
       clearbutton.addActionListener(this);
       clearbutton.setVisible(true);

       savebutton = new JButton("Save to file");
       savebutton.setBounds(30, 100, 150, 25);
       add(savebutton);
       savebutton.addActionListener(this);
       savebutton.setVisible(true);

       loadbutton = new JButton("Load from file");
       loadbutton.setBounds(200, 100, 150, 25);
       add(loadbutton);
       loadbutton.addActionListener(this);
       loadbutton.setVisible(true);

       setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
       setVisible(true);
   }

   public SerializationExample() {
       initializeWindow("Assignment #10: Integer Store");
   }

   public static void main(String[] args) {
       new SerializationExample();
   }

   @Override
   public void actionPerformed(ActionEvent e) {
       if (e.getSource() == ytextfield) {

       }
       if (e.getSource() == clearbutton) {
           ytextfield.setText("");
       }
       if (e.getSource() == savebutton) {
           int n = Integer.parseInt(ytextfield.getText());
           mynumber = new MyNumber(n);

           try {
               ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("CurrentValue.obj"));
               oos.writeObject(mynumber);
               oos.close();
           } catch (FileNotFoundException e1) {
               e1.printStackTrace();
           } catch (IOException e1) {
               e1.printStackTrace();
           }
       }
       if (e.getSource() == loadbutton) {
           try {
               ObjectInputStream ois = new ObjectInputStream(new FileInputStream("CurrentValue.obj"));
               mynumber = (MyNumber) ois.readObject();
               ytextfield.setText(mynumber.toString());
               ois.close();
               // May be needed on MacOS
               repaint();
           } catch (FileNotFoundException e1) {
               e1.printStackTrace();
           } catch (IOException e1) {
               e1.printStackTrace();
           } catch (ClassNotFoundException e1) {
               e1.printStackTrace();
           }
       }

   }
}

----------------------

//WindowSerialization.java

package serial;

import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.EOFException;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;

import javax.swing.DefaultListModel;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JTextField;

public class WindowSerialization extends JFrame implements ActionListener {

   private static final long serialVersionUID = 1L;

   private JLabel prompt;

   private JButton clearbutton;

   private JTextField ytextfield;

   private DefaultListModel<Integer> listModel;

   private JList<Integer> list;

   private JButton savebutton;

   private JButton loadbutton;

   private void initializeWindow(String title) {

       setTitle(title);

       setBounds(100, 100, 400, 300);

       setLayout(null);

       getContentPane().setBackground(Color.YELLOW);

       prompt = new JLabel("Enter a number and press Enter:");

       prompt.setBounds(10, 20, 240, 25);

       add(prompt);

       prompt.setVisible(true);

       ytextfield = new JTextField();

       ytextfield.setBounds(250, 20, 100, 25);

       add(ytextfield);

       ytextfield.setVisible(true);

       ytextfield.addActionListener(this);

       listModel = new DefaultListModel<Integer>();

       list = new JList<Integer>(listModel);

       list.setBounds(30, 60, 250, 150);

       list.setLayoutOrientation(JList.HORIZONTAL_WRAP);

       add(list);

       clearbutton = new JButton("Clear");

       clearbutton.setBounds(300, 100, 90, 25);

       add(clearbutton);

       clearbutton.addActionListener(this);

       clearbutton.setVisible(true);

       savebutton = new JButton("Save to file");

       savebutton.setBounds(30, 230, 150, 25);

       add(savebutton);

       savebutton.addActionListener(this);

       savebutton.setVisible(true);

       loadbutton = new JButton("Load from file");

       loadbutton.setBounds(200, 230, 150, 25);

       add(loadbutton);

       loadbutton.addActionListener(this);

       loadbutton.setVisible(true);

       setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

       setVisible(true);

   }

   public WindowSerialization() {

       initializeWindow("Assignment #10: Integer Store");

   }

   public static void main(String[] args) {

       new WindowSerialization();

   }

   @Override

   public void actionPerformed(ActionEvent e) {

       if (e.getSource() == ytextfield) {

           int n = Integer.parseInt(ytextfield.getText());

           listModel.addElement(n);

       }

       if (e.getSource() == clearbutton) {

           ytextfield.setText("");

           listModel.clear();

       }

       if (e.getSource() == savebutton) {

           try {

               ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("CurrentValue.obj"));

               for (int i = 0; i < listModel.size(); i++)

               {

                   MyNumber mynumber = new MyNumber(listModel.get(i));

                   oos.writeObject(mynumber);

               }

               oos.close();

           } catch (FileNotFoundException e1) {

               e1.printStackTrace();

           } catch (IOException e1) {

               e1.printStackTrace();

           }

       }

       if (e.getSource() == loadbutton) {

           try {

               ObjectInputStream ois = new ObjectInputStream(new FileInputStream("CurrentValue.obj"));

               MyNumber mynumber = (MyNumber) ois.readObject();

               listModel.clear();

               while (mynumber != null)

               {

                   listModel.addElement(mynumber.getNumber());

                   mynumber = (MyNumber) ois.readObject();

               }

               ytextfield.setText(mynumber.toString());

               ois.close();

               // May be needed on MacOS

               repaint();

           } catch (EOFException e2) {

               // when EOF is reached

           }

           catch (FileNotFoundException e1) {

               e1.printStackTrace();

           } catch (IOException e1) {

               e1.printStackTrace();

           } catch (ClassNotFoundException e1) {

               e1.printStackTrace();

           }

       }

   }

}

----------------

(Following class is actually a Junit Test Case)

//NumberListTest.java

package inclass;

import static org.junit.Assert.fail;

import java.util.ArrayList;
import java.util.List;

import org.junit.After;
import org.junit.AfterClass;
import org.junit.Assert;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;

public class NumberListTest {

   private NumberList add;

   @BeforeClass
   public static void setUpBeforeClass() throws Exception {
   }

   @AfterClass
   public static void tearDownAfterClass() throws Exception {
   }

   @Before
   public void setUp() throws Exception {
       System.out.println("Set up");
       add = new NumberList();
   }

   @After
   public void tearDown() throws Exception {
   }

   @Test
   public void testAddTwoInts() {
       int t1 = 100;
       int t2 = 200;
       int expected = 300;
       int result = add.add(t1, t2);
       org.junit.Assert.assertEquals(expected, result);
   }

   @Test
   public void testAddAnInt() {
       fail("Not Implemented");
   }

   @Test
   public void testGetNumbers() {
       List<Integer> numbers = new ArrayList<>();
       numbers.add(1);
       numbers.add(2);
       numbers.add(3);

       add.add(1);
       add.add(2);
       add.add(3);

       Assert.assertTrue(add.isEqual(numbers));
       // fail("Not Implemented");
   }

   @Test
   public void testRemoveAnInt() {
       fail("Not Implemented");
   }

   @Test
   public void testIsEqual() {
       fail("Not Implemented");
   }

   @Test
   public void testRemoveOdd() {
       fail("Not Implemented");
   }
}

Explanation / Answer

Hi,
Please see below the updated class and Testcases.
removeOdd() is working fine. Please see the out put and test case.
Please comment fro any queries
Thanks,

NumberListTest.java

//NumberListTest.java
package inclass;
import static org.junit.Assert.*;
import static org.junit.Assert.fail;
import java.util.ArrayList;
import java.util.List;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Assert;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
public class NumberListTest {
private NumberList add;
@BeforeClass
public static void setUpBeforeClass() throws Exception {
}
@AfterClass
public static void tearDownAfterClass() throws Exception {
}
@Before
public void setUp() throws Exception {
System.out.println("Set up");
add = new NumberList();
}
@After
public void tearDown() throws Exception {
}
@Test
public void testAddTwoInts() {
int t1 = 100;
int t2 = 200;
int expected = 300;
int result = add.add(t1, t2);
org.junit.Assert.assertEquals(expected, result);
}
@Test
public void testAddAnInt() {
fail("Not Implemented");
}
@Test
public void testGetNumbers() {
List<Integer> numbers = new ArrayList<>();
numbers.add(1);
numbers.add(2);
numbers.add(3);
add.add(1);
add.add(2);
add.add(3);
Assert.assertTrue(add.isEqual(numbers));
// fail("Not Implemented");
}
@Test
public void testRemoveAnInt() {
fail("Not Implemented");
}
@Test
public void testIsEqual() {
fail("Not Implemented");
}
@Test
public void testRemoveOdd() {
   NumberList numList = new NumberList();
   //adding numbers to numList
       numList.add(10);
       numList.add(34);
       numList.add(90);
       numList.add(45);
       numList.add(64);
       numList.add(25);
       numList.add(64);
       numList.add(89);
       numList.add(37);
       numList.add(20);
       for(int i= 0; i<numList.getNumbers().size();i++){
           Number num = numList.getNumbers().get(i);
           System.out.println(num+ " ");
       }
       boolean result = numList.removeOdd();
       System.out.println("Removed Odd");
       for(int i= 0; i<numList.getNumbers().size();i++){
           Number num = numList.getNumbers().get(i);
           System.out.println(num+ " ");
       }
       assertTrue(result);
   }
  
}

NumberList.java

//NumberList.java
package inclass;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class NumberList {
private List<Integer> numbers;
public NumberList() {
numbers = new ArrayList<>();
}
public int add(int a, int b) {
return a + b;
}
public void add(int i) {
numbers.add(i);
}
/*
* The remove(int) method will remove the specified value from the numbers
* list and return true - if an item was removed false - if nothing was
* removed.
*/
public boolean remove(int i) {
Integer nr = i;
if (numbers.contains(nr)) {
return numbers.remove(nr);
} else
return false;
}
/*
* The getNumbers method will return a copy of the numbers list
*/
public List<Integer> getNumbers() {
return new ArrayList<>(numbers);
}
/*
* The isEqual(List<Integer>) method will compare an input list with the
* numbers list and return true - if the two are equal false - if they are
* not equal
*/
public boolean isEqual(List<Integer> list) {
return numbers.equals(list);
}
/*
* The removeOdd method should remove all odd numbers from the numbers list
* and return true - if one or more items were removed false - if nothing
* was removed.
*/
public boolean removeOdd() {
boolean result = false;
Iterator<Integer> itera = numbers.iterator();
while (itera.hasNext()) {
Integer in = itera.next();
if (in.intValue() % 2 == 1) {
itera.remove();
result = true;
}
}
return result;
}
}

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote