java - java中的数组成对匹配给出错误还在两个相似元素之间存储数据
问题描述
我有两个数组。它们代表 x 坐标和 y 坐标。代码就像这样,如果两个坐标相同,它会打印一条语句“两个坐标都相同”,否则它们会打印它们不一样。
我的代码是
public static void main(String args[]){
double[]xcoordinate={2.3,1.2,3.3,5.5,2.3,1.3,7.9,1.2,3.3,3.3,5.2};
double[]ycordinate={5.4,2.2,4.4,6.6,5.4,1.9,5.2,2.2,3.5,4.4,4.2};
int i=0,k=1;
while(i<xcoordinate.length){
//if(xcoordinate[i]&&ycordinate[i]==xcoordinate[k]&&ycordinate[k]){
if(xcoordinate[i]==xcoordinate[k]&&ycordinate[i]==ycordinate[k]){
System.out.println("Both co ordinates are same");
i++;
if(k<xcoordinate.length) {
k = i + 1;
}
}
else{
System.out.println("They are not same");
}
k++;
}
}
如果我分析数组,我可以看到 2.3 和 5.4 是对的,1.2 和 2.2 是对的,依此类推。如您所见,2.3 和 5.4 在第 5 对重复。所以在这个时候他们打印他们是一样的。
但是该 if 语句不会运行代码块。
错误:线程“主”java.lang.ArrayIndexOutOfBoundsException 中的异常:11
如何消除此错误以及如何存储它们不是同一类型的数据?
想存储{{1.2,3.3,5.5}和{2.2,4.4,6.6}}和{{3.3,5.5,2.3,1.3,7.9}和{4.4,6.6,5.4,1.9,5.2}} ... .. 分别地。
解决方案
我相信您正在尝试跟踪重复坐标,如果是,那么这可能会有所帮助!
int i=0;
HashMap<Double,Double> hst = new HashMap<Double,Double>();
while(i<xcoordinate.length){
if(hst.containsKey(xcoordinate[i])){
if(hst.get(xcoordinate[i]) == ycordinate[i])
System.out.println("Occured before and now again at pos" +i);
i++;
continue;
}
System.out.println("Not occured before");
hst.put(xcoordinate[i],ycordinate[i]);
i++;
}
推荐阅读
- python-3.x - 在 Python3 中交换列表交换引用中的值吗?
- php - 如何使用 php 在 mandrill 中使用电子邮件标签(用于跟踪电子邮件)
- sql - SQL 查询仅获取具有特定类型的记录
- java - Java tomcat应用程序挂起,停止后无法重新启动tomcat
- networking - 计算两个代理品种之间的交互以更改一个的属性类型(netlogo)
- php - Laravel5:如果没有准备好运行的命令,如何禁用默认调度程序消息
- optimization - 如何在 Cplex 中使用“IloOplOutputFile”来编写具有多个索引的变量?
- html - 如何在使用省略号文本溢出样式时减小表格列的宽度?
- c# - UWP:写一个巨大的日志文件很慢
- c - C中kill系统调用的模棱两可的行为