v2) { -6ren">
gpt4 book ai didi

java - 如果两辆车在任何时候相遇,请打印"is",否则“否”?

转载 作者:行者123 更新时间:2023-11-30 06:44:29 24 4
gpt4 key购买 nike

这里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;
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);

}

}

最佳答案

这是一个数学问题,而不是一个编程问题。基本上你不需要任何循环和东西来回答它。我假设(因为没有其他影响)两辆车以速度 V 沿相同的 X 方向行驶,其中 X 和 V 都是正数。

所以基本上你的逻辑可以是 -> 如果更快的车落后于较慢的车,他们最终会相遇。否则他们不会。在这种情况下,您将不需要任何循环。下面示例中的最后一项检查是它们是否已经位于同一位置。

   if((x1<x2 && v1>v2) || (x1>x2 && v1<v2) || (x1==x2)) { 
System.out.println("Yes");
} else {
System.out.println("No");
}

如果 V 可以为负(例如,显示向后移动,这有点奇怪,因为速度不能为负),那么它仍然是相同的。仅当您想知道 vector X 上它们相交的点时,才可以进行循环。但通过一些计算,您仍然可以在没有循环的情况下进行计算。例如:

int vDiff=Math.abs(v1-v2);      
int xDiff=Math.abs(x1-x2);
System.out.println("Meeting point: "+(((double)xDiff)/((double)vDiff)*v1+x1));

关于java - 如果两辆车在任何时候相遇,请打印"is",否则“否”?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50390261/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com