对于Java中特定上下文中的每个块
我是一名八年级学生,我的任务是用Java创建一个应用程序,根据两条直线的斜率和y轴截距,找到两条虚拟直线相交的点。现在,我有两个数组(都有长值),它们存储给定x值(x=0、1、2等)的y值。现在我需要弄清楚如何为每个块(你知道,其中有冒号的块)创建一个数组,以检查第一个数组中的y值是否等于另一个数组中的对应值。如何执行此操作?由于您有两个数组,您可能应该使用普通循环,而不是每个循环使用一个。比如:对于Java中特定上下文中的每个块,java,Java,我是一名八年级学生,我的任务是用Java创建一个应用程序,根据两条直线的斜率和y轴截距,找到两条虚拟直线相交的点。现在,我有两个数组(都有长值),它们存储给定x值(x=0、1、2等)的y值。现在我需要弄清楚如何为每个块(你知道,其中有冒号的块)创建一个数组,以检查第一个数组中的y值是否等于另一个数组中的对应值。如何执行此操作?由于您有两个数组,您可能应该使用普通循环,而不是每个循环使用一个。比如: // assuming both arrays are of the same size for
// assuming both arrays are of the same size
for (int i = 0; i < firstArr.length; ++i) {
if (firstArr[i] == secondArr[i]) {
// match found
}
}
//假设两个数组的大小相同
对于(int i=0;i
我不打算对算法进行评论,但对于您的用例来说,每个块的对应性似乎不太合适。除了每个块不适合多个集合之外,还可能存在数组大小不同的问题
最好使用如下循环
for(int i = 0;i < firstArr.length && i < secondArr.length;i++) {
//Your comparison logic here
}
for(int i=0;i
这个循环的作用是,它只运行到两个数组中较小数组的末尾。Edit
List<Long> xList; //Assuming it has 0, 1, 2, 3, 4, 5
for(Long x : xList){
Long y1 = giveMePointYBasedOnSlope1(x);
Long y2 = giveMePointYBasedOnSlope2(x);
if(y1 == y2){
System.out.println("They do intersect");
break; //leave loop
}
}
//Example slope1 : y = (x * 2) + 3
public Long giveMePointYBasedOnSlope1(Long x){
return (x*2) + 3;
}
//Example slope2 : y = (x * -.5) + 7
public Long giveMePointYBasedOnSlope2(Long x){
return (x * -0.5) + 7;
}
如果在数组中同时有x和y类型Long,只需执行以下操作
findIntersect:
for(Long x : xArray){
for(Long y : yArray){
if(x==y){
System.out.println("They do intersect");
break findIntersect; //leave loop
}
}
}
很抱歉错过了那个部分
结束编辑
List<Long> xList; //Assuming it has 0, 1, 2, 3, 4, 5
for(Long x : xList){
Long y1 = giveMePointYBasedOnSlope1(x);
Long y2 = giveMePointYBasedOnSlope2(x);
if(y1 == y2){
System.out.println("They do intersect");
break; //leave loop
}
}
//Example slope1 : y = (x * 2) + 3
public Long giveMePointYBasedOnSlope1(Long x){
return (x*2) + 3;
}
//Example slope2 : y = (x * -.5) + 7
public Long giveMePointYBasedOnSlope2(Long x){
return (x * -0.5) + 7;
}
列表xList//假设它有0,1,2,3,4,5
用于(长x:xList){
长y1=给定的基点基线斜率1(x);
长y2=给定的基准点斜率2(x);
如果(y1==y2){
System.out.println(“它们确实相交”);
break;//离开循环
}
}
//示例1:y=(x*2)+3
公共长指定点BASEDONSLOPE1(长x){
返回(x*2)+3;
}
//示例2:y=(x*-.5)+7
公共长指定点BasedOnSlope2(长x){
回报率(x*-0.5)+7;
}
好的观点。。。我明白你的意思了,谢谢!如果可能的话,我会接受,除非有更好的答案+1@D3mon-1stVFW他回答了我的问题,尽管他可能给我指出了不同的方向。这其中的棘手之处在于foreach
循环只在单个实体上迭代,而您正试图在多个实体上迭代(两个数组同时迭代)。很清楚如何使用传统的for
循环来实现这一点,但不使用foreach
循环。哦,就像下面的答案(使用向上投票)一样,对吗?是的,但是如果你被特别要求使用foreach
循环,你将需要其他类型的解决方案。@CarlManaster不能说我对Java了解太多,所以我真的不在乎我用的是什么,只要代码最终能正常工作,并且易于阅读/高效。那么@Binyamin的解决方案就很好了。好的,谢谢。所以基本上和Binyamin Sharet的答案一样,对吧?令人困惑。。。但是好吧。。我想我认为这是最容易理解的,假设你有不错的数学。可以使用坡度创建y点。因为你有一组x点,那么你只需要创建y,如果y是相同的,那么它们就会相交。我理解数学部分,但花了我一段时间+1我看到了编辑,现在确实更有意义了。非常感谢。从RL示例和处理200k+行代码的项目中,我可以向您保证,函数名称所说的越多,就越容易理解它在做什么,就像读一个句子,它至少可以节省2分钟\function。你只知道它应该做什么,而不看代码。