加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 数组中的数字和出现次数

发布时间:2020-12-15 02:10:34 所属栏目:Java 来源:网络整理
导读:我的作业是使用数组的包实现,您可以根据需要添加和删除数字.到目前为止,我已经成功地完成了除数字列表之外的所有事情,这应该是这样的: 我不知道从哪里开始,所以一些指针会很好,拜托并谢谢你. (注意:除了数组之外我不允许使用任何东西,所以arraylist,collec
我的作业是使用数组的包实现,您可以根据需要添加和删除数字.到目前为止,我已经成功地完成了除数字列表之外的所有事情,这应该是这样的:

我不知道从哪里开始,所以一些指针会很好,拜托并谢谢你. (注意:除了数组之外我不允许使用任何东西,所以arraylist,collection等对我无法帮助.)

编辑:我为计数创建了另一个数组,在某些情况下代码似乎工作正常.但是,有时当我运行它时,它会给我一个完全错误的输出,我不知道如何解决它?例如,如果我输入数字(按此顺序)11,22,11,33,22我得到了回复:

enter image description here

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]);
            }
        }
    }
}
}

解决方法

看起来你有List()方法的问题.将其更改为:

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|
+--------+--------+

另外,将array.length更改为index将允许添加0.

public int Count(int c) {
    int elements = 0;
    for (int i = 0; i < index; i++) {
        if (array[i] == c) {
            elements++;
        }
    }
    return elements;
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读