Java-(打印不同的数字)
我试图解决这个问题: “编写一个程序,读入十个数字,并显示不同数字的数量以及由一个空格分隔的不同数字。” 我的代码目前并没有保存所有不同的数字,同时重复显示0。如果有人能看出我的逻辑哪里出了问题,任何提示都会有所帮助。谢谢大家!Java-(打印不同的数字),java,printing,numbers,distinct,Java,Printing,Numbers,Distinct,我试图解决这个问题: “编写一个程序,读入十个数字,并显示不同数字的数量以及由一个空格分隔的不同数字。” 我的代码目前并没有保存所有不同的数字,同时重复显示0。如果有人能看出我的逻辑哪里出了问题,任何提示都会有所帮助。谢谢大家! public class PracticeProject { public static void main(String args[]) { int[] number = new int[10]; int[] counter = new int[10]
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] + " ");
}
}
公共课堂实习项目
{
公共静态void main(字符串参数[])
{
int[]编号=新int[10];
int[]计数器=新的int[10];
int numcounter=0;
努姆根(数字);
numcounter=distNum(数字、计数器、numcounter);
dispDist(计数器、numcounter);
}
公共静态void numGen(int[]编号)
{
Random rand=新的Random();
for(int i=0;i 对于(int j=0;j问题在于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;
}
public static int distNum(int[]number,int[]counter,int numcounter){
for(int i=0;i
我遍历随机数数组,对每一个随机数,我扫描计数器
,查看是否已经遇到该值。如果该值重复,则不会将其添加到唯一列表中
此方法已使用IntelliJ与原始代码的其余部分一起进行了测试,它似乎工作正常。请尝试使用下面的函数。…使用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
}
}
公共无效副本(int[]a){
HashMap h=新的HashMap();
for(int i=0;i
如果使用数组
存储计数器,则需要设置默认值,否则如果数组有多个0
,则通过相等来区分。因为int数组
默认值为0
您可以使用列表
或向量
存储计数器
public static void main(String args[]) {
int[] number = new int[10];
int[] counter = new int[10];
List<Integer> counters = new ArrayList<Integer>();
int numcounter = 0;
numGen(number);
numcounter = distNum(number, counters, numcounter);
dispDist(counters, 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, List<Integer> counters, int numcounter) {
for (int i : number) {
if (!counters.contains(i)){
counters.add(i);
}
}
return numcounter;
}
public static void dispDist(List<Integer> counter, int numcounter) {
for (Integer i : counter) {
System.out.print(i + " ");
}
}
publicstaticvoidmain(字符串参数[]){
int[]编号=新int[10];
int[]计数器=新的int[10];
列表计数器=新的ArrayList();
int numcounter=0;
努姆根(数字);
numcounter=distNum(数字、计数器、numcounter);
dispDist(计数器、numcounter);
}
公共静态void numGen(int[]编号){
Random rand=新的Random();
for(int i=0;i
使用您的输入数字数组创建映射keep random进入集合
,该集合只保持距离如果不想存储频率,您也可以使用Set