Java – numbers and occurrences in the array

My job is to use the package implementation of array. You can add and delete numbers as needed So far, I have successfully completed everything except the number list, which should be like this:

I don't know where to start, so some pointers will be good, please and thank you (Note: I don't allow anything except arrays, so ArrayList, collection, etc. can't help me.)

Edit: I created another array for the count. In some cases, the code seems to work properly However, sometimes when I run it, it will give me a completely wrong output. I don't know how to solve it? For example, if I enter numbers (in this order) 11,22,11,33,22, I get a reply:

import java.util.Scanner;

public class Bag {

int index = 0;
int[] array = new int[50];

public static void main(String[] args) {
    int x = 0;
    Bag bag = new Bag();

    Scanner scan = new Scanner(system.in);

    while (x == 0) {
        System.out.print("Add(A),Delete(D),Find(F),Size(S),Min(m),Max(M),List(L),Quit(Q) >> ");
        char c = scan.next().charAt(0);
        switch (c) {
            case 'A':
                int y = scan.nextInt();
                bag.Add(y);
                break;
            case 'D':
                int d = scan.nextInt();
                bag.Delete(d);
                break;
            case 'F':
                int z = scan.nextInt();
                bag.Find(z);
                break;
            case 'S':
                bag.Size();
                break;
            case 'm':
                bag.Min();
                break;
            case 'M':
                bag.Max();
                break;
           case 'L': bag.List();
                break;
            case 'Q': bag.Quit();
            }
        }

}

public void Add(int y) {
    array[index] = y;
    index++;
    System.out.println("   " + y + " is added to the Bag. ");
}

    public void Delete(int d) {
for (int i = 0; i < index; i++) {
    if (d == array[i]) {
        while (i < index) {
                array[i] = array[i + 1];
            i++;
        }
        System.out.println("   " + d + " is deleted from the Bag.");
        index--;
        return;
    }
}
System.out.println("   Cannot delete " + d
        + ". It does not exist in the Bag.");

    }   

public void Find(int z)
   {
     int count = 0;
     for (int i = 0; i < array.length; i++) {
       if (array[i] == z) {
          count++;
        }
      }
      System.out.println("   There is (" + count + ") " + z
                + " in the Bag.");

          }
public void Size() {
    System.out.println("  There are " + index + " numbers in the Bag.");
}

public void Min() {
    int min = array[0];
    for (int i = 1; i < index; i++) {
        if(min > array[i]) {
            min = array[i];
        }
    }
    System.out.println("   The minimum number in the Bag is " + min + ".");
}
public void Max() {
    int max = array[0];
    for (int i = 1; i < index; i++) {
        if(max < array[i]) {
            max = array[i];
        }
    }
    System.out.println("   The maximum number in the Bag is " + max + ".");
}
public void Quit() {
    System.out.println("Bye…");
}

public int Count(int c) {
    int elements = 0;
    for (int i = 0; i < array.length; i++) {
        if (array[i] == c) {
            elements++;
        }
    }
    return elements;
}
public void delete(int c) {
    for (int i = 0; i < index; i++) {
        if (c == array[i]) {
            while (i < index) {
                array[i] = array[i + 1];
                i++;
            }
            index--;
            return;
        }
    }
}
public void List() {
    System.out.println("+--------+--------+");
    System.out.println("| Number | Occurs |");
    System.out.println("+--------+--------+");

    for(int i = 0; i < index; i++){
        if(Count(array[i]) == 1){

      System.out.printf("|%8d|%8d|\n",array[i],Count(array[i]));
      System.out.println("+--------+--------+");
        }
        else{
            System.out.printf("|%8d|%8d|\n",Count(array[i]));
            System.out.println("+--------+--------+");
            for(int j = 0; j <= Count(array[i]); j++){
                delete(array[i]);
            }
        }
    }
}
}

Solution

It looks like you have a problem with the list () method Change it to:

public void List() {
System.out.println("+--------+--------+");
System.out.println("| Number | Occurs |");
System.out.println("+--------+--------+");

while(index > 0){
    int del = array[0];
    int count = Count(del);
    System.out.printf("|%8d|%8d|\n",del,count);
    System.out.println("+--------+--------+");
    for(int j = 0; j < count; j++){
        delete(del);
    }
}

}

+--------+--------+
| Number | Occurs |
+--------+--------+
|      11|       3|
+--------+--------+
|      22|       2|
+--------+--------+
|      33|       1|
+--------+--------+

In addition, array Changing length to index will allow adding 0

public int Count(int c) {
    int elements = 0;
    for (int i = 0; i < index; i++) {
        if (array[i] == c) {
            elements++;
        }
    }
    return elements;
}
The content of this article comes from the network collection of netizens. It is used as a learning reference. The copyright belongs to the original author.
THE END
分享
二维码
< <上一篇
下一篇>>