Java 如果两辆车在任何一点相遇,请打印“是”或“否”?
这里x1和v1是car1的初始位置和速度,x2和v2是car2的初始位置和速度。我需要知道这两辆车是否在任何时候相遇。总是显示“否”时会出现错误。有什么建议吗Java 如果两辆车在任何一点相遇,请打印“是”或“否”?,java,Java,这里x1和v1是car1的初始位置和速度,x2和v2是car2的初始位置和速度。我需要知道这两辆车是否在任何时候相遇。总是显示“否”时会出现错误。有什么建议吗 if (v1 > v2) { while ((x1 + (v1 * i)) > (x2 + (v2 * i))) { if ((x1 + (v1 * i)) == (x2 + (v2 * i))) { prime = true;
if (v1 > v2) {
while ((x1 + (v1 * i)) > (x2 + (v2 * i))) {
if ((x1 + (v1 * i)) == (x2 + (v2 * i))) {
prime = true;
break;
}
System.out.println(""+i);
i++;
}
if (prime == true) {
s = "Yes";
} else {
s = "No";
}
}
if (v2 > v1) {
while ((x2 + (v2 * i)) > (x1 + (v1 * i))) {
if ((x1 + (v1 * i)) == (x2 + (v2 * i))) {
prime = true;
break;
}
System.out.println(""+i);
i++;
}
if (prime == true) {
s = "Yes";
} else {
s = "No";
}
}
if (v1 == v2) {
if (x1 == x2) {
s = "Yes";
} else s = "No";
}
System.out.println(""+s);
}
}这是一个数学问题,与其说是一个编程问题,不如说是一个数学问题。基本上你不需要任何循环和东西来回答它。我假设(因为没有其他含义)两辆车以相同的X方向行驶,速度为V,其中X和V都是正数 所以基本上你的逻辑是->如果速度快的车在速度慢的车后面,他们最终会相遇。否则他们不会。在这种情况下,不需要任何循环。下面示例中的最后一个检查是它们是否已经在同一位置
if((x1<x2 && v1>v2) || (x1>x2 && v1<v2) || (x1==x2)) {
System.out.println("Yes");
} else {
System.out.println("No");
}
我认为你把问题复杂化了,通过你的迭代,你基本上找到了汽车相遇的时间步长,如果它们确实相遇的话 从一个方向考虑,这两辆车实际上只有五种可能性: 1) 第1辆车在第2辆车的前面,行驶速度比第2辆车快或与第2辆车相同=>车辆永远不会相遇 2) 第一辆车在第二辆车后面,行驶速度比第二辆车快=>两辆车相遇 3) 第一辆车在第二辆车前面,行驶速度比第二辆车慢=>两辆车相遇 4) 第1辆车在第2辆车后面,行驶速度比第2辆车慢或与第2辆车相同=>车辆永远不会相遇 5) 汽车已经相遇了 在代码中,这可能如下所示:
boolean carsMeet(x1,v1,x2,v2){
boolean output = false;
if(x1 > x2){
// Conditions 1 and 3. Car 1 is ahead of car 2
if (v2 > v1){
// Condition 3
output = true;
}
} else if (x1 < x2){
// Conditions 2 and 4. Car 2 is ahead of car 1
if (v1 > v2){
// Condition 2
output = true;
}
} else {
// Condition 5. Car 1 has already met car 2
output = true;
}
return output;
}
布尔carsmet(x1,v1,x2,v2){
布尔输出=假;
如果(x1>x2){
//条件1和3。1号车在2号车前面
如果(v2>v1){
//条件3
输出=真;
}
}else if(x1v2){
//条件2
输出=真;
}
}否则{
//条件5.车辆1已经满足车辆2的要求
输出=真;
}
返回输出;
}
我还没有运行这段代码来检查语法错误,但一般来说,这是我建议解决问题的方法,而不是您当前的方法。它们是线性的吗?就在X方向?你处理整数?只是为了澄清一下,它们是朝着同一个方向还是相反的方向运动?你想知道他们的位置是否相同,对吗?你的代码看起来比需要的复杂得多,所以你可以尝试再次检查你的数学,以确保你没有遗漏任何东西。我想它们不是朝着相反的方向走,就是在一个非整数
I
处相遇,所以等式永远不会成立。打印出他们在每一步的位置,你就会看到发生了什么。你只在单行道上开车吗?添加一些解释。
s = "No";
if (x1 == x2) {
s = "Yes";
} else if (v1 == v2) {
s = "No";
} else if ((x2-x1)/(v1-v2) > 0) {
s = "Yes";
}
s = "No";
if (x1 == x2) {
s = "Yes";
} else if (v1 == v2) {
s = "No";
} else if ((x2-x1)/(v1-v2) > 0) {
s = "Yes";
}