我正试图解决这个问题:
“编写一个读取十个数字的程序,并显示不同数字的数量以及由一个空格分隔的不同数字。”
我的代码目前没有保存所有不同的数字,并且反复显示0.如果有人能看到我的逻辑出错的地方,任何提示都会有所帮助。谢谢!
public class PracticeProject
{
public static void main(String args[])
{
int[] number = new int[10];
int[] counter = new int[10];
int numcounter = 0;
numGen(number);
numcounter = distNum(number, counter, numcounter);
dispDist(counter, numcounter);
}
public static void numGen(int[] number)
{
Random rand = new Random();
for (int i = 0; i < number.length; i++)
{
number[i] = rand.nextInt(10);
System.out.print(number[i] + " ");
}
System.out.println();
}
public static int distNum(int[] number, int[] counter, int numcounter)
{
for (int i = 0; i < number.length; i++)
{
for (int j = 0; j <= i; j++)
{
if (counter[j] == number[i])
{
break;
}
if (j == i)
{
counter[j] = number[i];
numcounter++;
}
}
}
return numcounter;
}
public static void dispDist(int[] counter, int numcounter)
{
for (int i = 0; i < numcounter; i++)
{
System.out.print(counter[i] + " ");
}
}
}
答案 0 :(得分:5)
问题在于distNum()
方法中的逻辑,该方法未正确删除输出数组中的所有重复项。请尝试使用此版本:
public static int distNum(int[] number, int[] counter, int numcounter) {
for (int i = 0; i < number.length; i++) {
boolean isUnique = true;
for (int j = 0; j < numcounter; j++) {
if (counter[j] == number[i]) {
isUnique = false;
break;
}
}
if (isUnique) {
counter[numcounter] = number[i];
numcounter++;
}
}
return numcounter;
}
我遍历随机数字数组,对于每一个,我扫描counter
以查看是否已经遇到该值。如果它是重复的,那么它不会被添加到唯一列表中。
此方法使用IntelliJ与原始代码的其余部分一起进行了测试,似乎工作正常。
答案 1 :(得分:0)
尝试使用以下功能....使用Hashmap ...键将是否定的。价值将是它发生的分裂时间。
public void duplicate(int[] a) {
HashMap<Integer, Integer> h = new HashMap<Integer, Integer>();
for (int i = 0; i < a.length; i++) {
Integer j = (int) h.put(a[i], 1);
if (j != null) { // checking if already in hashmap
h.put(a[i], j + 1); // if there then incrementing value
}
}
Iterator it = h.entrySet().iterator(); // displaying value you can have you logic here
while (it.hasNext()) {
Map.Entry pair = (Map.Entry) it.next();
System.out.println(pair.getKey() + " = " + pair.getValue());
it.remove(); // avoids a ConcurrentModificationException
}
}
答案 2 :(得分:0)
如果您使用margin-bottom
存储计数器,则需要设置默认值,否则如果您的数组有多个.main .menu
,则通过等于进行区分。因为array
默认值为 0 。
您可以使用0
或int array
来存储list
。
vector