Kev*_*inG 3 java printing numbers distinct
我正试图解决这个问题:
"编写一个读取十个数字的程序,显示不同数字的数量和不同的数字,用一个空格分隔."
我的代码目前没有保存所有不同的数字,并且反复显示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] + " ");
}
}
Run Code Online (Sandbox Code Playgroud)
}
问题出在你的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;
}
Run Code Online (Sandbox Code Playgroud)
我浏览了随机数字数组,每扫描一次,我都会counter
查看是否已遇到该值.如果它是重复的,则它不会被添加到唯一列表中.
使用IntelliJ测试此方法以及其他原始代码,它似乎正常工作.
归档时间: |
|
查看次数: |
1223 次 |
最近记录: |