java – 数组中的数字和出现次数
发布时间:2020-12-15 02:10:34 所属栏目:Java 来源:网络整理
导读:我的作业是使用数组的包实现,您可以根据需要添加和删除数字.到目前为止,我已经成功地完成了除数字列表之外的所有事情,这应该是这样的: 我不知道从哪里开始,所以一些指针会很好,拜托并谢谢你. (注意:除了数组之外我不允许使用任何东西,所以arraylist,collec
我的作业是使用数组的包实现,您可以根据需要添加和删除数字.到目前为止,我已经成功地完成了除数字列表之外的所有事情,这应该是这样的:
我不知道从哪里开始,所以一些指针会很好,拜托并谢谢你. (注意:除了数组之外我不允许使用任何东西,所以arraylist,collection等对我无法帮助.) 编辑:我为计数创建了另一个数组,在某些情况下代码似乎工作正常.但是,有时当我运行它时,它会给我一个完全错误的输出,我不知道如何解决它?例如,如果我输入数字(按此顺序)11,22,11,33,22我得到了回复: 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; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |