java初学遇到困难

myeclipse0123 2009-12-16 08:18:03
一组数字求每个重复数字出现的次数的java代码
例如:3,3,4,5,5,5,6,6,7,8,8,8,8,9,10,11,11
找出3的量和3的起始位置
3:2:0
4:1:3
结果像这样

我的程序有逻辑问题像这样希望大家帮我改下,谢谢

package com.cn.csdn;

public class E01_HelloWorld {
public static void main(String[] args) {
E01_HelloWorld test = new E01_HelloWorld();
test.ss();
}

int arr[] = { 3, 3, 4, 5, 5, 5, 6, 6, 7, 8, 8, 8, 8, 9, 10, 11, 11 };
int a = 0;//重复的是哪个数字
int n = 0;//重复几次
int adr = -1;//重复的第一位置

public boolean exist(int i) {
boolean isExist = false;
for (int k = 0; k <= i; k++) {
if (arr[i] == arr[k]) {
isExist = true;
}
}
return isExist;
}

public void ss() {
System.out.println("arr.length=" + arr.length);
for (int i = 0; i < arr.length; i++) {
if (exist(arr[i])) {
a = arr[i];
adr = i;
for (int j = i; j < arr.length; j++) {
if (a == arr[j]) {
n++;
}
}
System.out.println("========");
System.out.println(a + ":" + n + ":" + adr);
}
}
}

}

...全文
108 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
myeclipse0123 2009-12-26
  • 打赏
  • 举报
回复
谢谢大家
leoliu0822 2009-12-17
  • 打赏
  • 举报
回复

package test;

public class Number {
private int value;//值
private int beginIndex;// 重复的第一位置
private int count;// 重复次数
public int getValue() {
return value;
}
public void setValue(int value) {
this.value = value;
}
public int getBeginIndex() {
return beginIndex;
}
public void setBeginIndex(int beginIndex) {
this.beginIndex = beginIndex;
}
public int getCount() {
return count;
}
public void setCount(int count) {
this.count = count;
}
@Override
public boolean equals(Object obj) {
if(this==obj){
return true;
}
if(obj==null){
return false;
}
if(obj.getClass()!=this.getClass()){
return false;
}else{
final Number n = (Number)obj;
return n.getValue()==this.getValue();
}
}
@Override
public int hashCode() {
final int prime = 27;
int result = 7;
result = result * prime + value ^ 0x7777777;
return super.hashCode();
}
@Override
public String toString() {
return "【" + this.value + " : " + this.beginIndex + " : " + this.count + "】";
}

}



package test;

import java.util.ArrayList;
import java.util.List;

public class Test {

/**
* @param args
*/
public static void main(String[] args) {
List<Number> l = new ArrayList<Number>();
int[] arr = { 3, 3, 4, 5, 5, 5, 6, 6, 7, 8, 8, 8, 8, 9, 10, 11, 11 };
for(int i=0;i<arr.length;i++){
Number n = new Number();
n.setValue(arr[i]);
if(l.contains(n)){//若包含则直接取出来
n = l.get(l.indexOf(n));
}else{
n.setBeginIndex(i+1);//若不存在则 记录第一次出现位置并加入list
l.add(n);
}
n.setCount(n.getCount()+1);//重复次数加1
}
System.out.println(l);
}

}
crazylaa 2009-12-17
  • 打赏
  • 举报
回复
纯数组,纯滴~~~~




public class HelloWord {
public static void main(String[] args) {
try {
HelloWord test = new HelloWord();
test.ss();
} catch (Exception e) {
e.printStackTrace();
}
}

int arr[] = { 3, 3, 4, 5, 5, 5, 6, 6, 7, 8, 8, 8, 8, 9, 10, 11, 11 };

int a = 0;// 重复的是哪个数字

int n = 0;// 重复几次

int adr = -1;// 重复的第一位置

public boolean exist(int i) {

boolean isExist = false;
try {
for (int k = 0; k < arr.length; k++) {
if (arr[i] == arr[k]) {
isExist = true;
break;
}
}
} catch (Exception e) {
e.printStackTrace();
}
return isExist;
}

public boolean has(int i) {
boolean has = false;
try {
for (int k = 0; k < i; k++) {
if (arr[i] == arr[k]) {
has = true;
break;
}
}
} catch (Exception e) {
e.printStackTrace();
}
return has;
}

public void ss() {
System.out.println("arr.length=" + arr.length);
try {
for (int i = 0; i <arr.length; i++) {
if (exist(arr[i])&&!has(i) ) {
a = arr[i];
adr = i;
for (int j = i; j<arr.length; j++) {
if (a == arr[j]) {
n++;
}
}
System.out.println("========");
System.out.println(a + ":" + n + ":" + adr);
n=0;

}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}

道光2008 2009-12-16
  • 打赏
  • 举报
回复
import java.util.HashMap;
import java.util.HashSet;
import java.util.Hashtable;
import java.util.Iterator;
import java.util.Map;

public class E01_HelloWorld {
public class DataObj {

int a = 0;// 重复的是哪个数字
int n = 0;// 重复几次
int adr = -1;// 重复的第一位置

public DataObj(int a, int n, int adr) {
//super();
this.a = a;
this.n = n;
this.adr = adr;
}

}
public static void main(String[] args) {
E01_HelloWorld test = new E01_HelloWorld();
test.ss();
}

int arr[] = { 3, 3, 4, 5, 5 };
HashMap hm = new HashMap();

public void ss() {
System.out.println("arr.length=" + arr.length);
for (int i = 0; i < arr.length; i++) {
// System.out.println("==i="+arr[i]);

//for (int k = 0; k < arr.length; k++) {
//if (arr[i] == arr[k] ) {
System.out.println(arr[i]);

System.out.println(!hm.containsKey(new Integer(arr[i])));
if (!hm.containsKey(new Integer(arr[i]))) {
hm.put(new Integer(arr[i]), new DataObj(arr[i],1,i));
} else {
DataObj doa = (DataObj)hm.get(new Integer(arr[i]));
doa.n +=1;
//System.out.println(arr[i]);
hm.put(new Integer(arr[i]),doa);
// }

}
// }



}
System.out.println("===sizi=="+hm.size());
Iterator iter = hm.entrySet().iterator();
while (iter.hasNext()) {
Map.Entry entry = (Map.Entry) iter.next();

DataObj val = (DataObj)entry.getValue();

System.out.println(val.a + ":" + val.n + ":" + val.adr);
}
}

}
道光2008 2009-12-16
  • 打赏
  • 举报
回复
public boolean exist(int i) {
boolean isExist = false;
for (int k = 0; k <= i; k++) {
if (arr[i] == arr[k]) {
isExist = true;
break;
}
}
return isExist;
}
ccsongdi 2009-12-16
  • 打赏
  • 举报
回复
你的计数器都没有被清零过

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧