英文:
A program to check if a number is present in series gives unexpected result
问题
以下是翻译好的代码部分:
public class Main {
public static void main(String args[]) {
Scanner sc = new Scanner(System.in);
double n;
int k;
int T = sc.nextInt(); // 用户提供的系列次数
while (T != 0) {
T -= 1;
int A = sc.nextInt(); // 等差数列的第一个项
int B = sc.nextInt(); // 要检查是否存在于系列中的数字
int C = sc.nextInt(); // 公差
if (A == B) {
System.out.print("YES");
}
n = (((B - A) / C) + 1); // 如果这个公式正确,那么当B存在于系列中时n应该是整数
// 或者当B不在系列中时n应该是浮点数
k = (int) n;
if (k == n)
System.out.println("YES");// 即使当B不在系列中时也会打印"YES"
else
System.out.println("NO");
}
}
}
英文:
Program to check if a given number is present in an arithmetic progression series. User provides T, which is the number of a series that the user also provides.
User provides A, 1st number of series, B, the number to check if present in series and C, the common difference.
The code runs, but won't submit online(shows runtime error). Also, in each case the output is "YES".
public class Main {
public static void main(String args[]) {
Scanner sc = new Scanner(System.in);
double n;
int k;
int T = sc.nextInt(); //number of times series will be given by user.
while (T != 0) {
T -= 1;
int A = sc.nextInt(); //1st term of the AP series
int B = sc.nextInt(); //to check if this number(B) appears in the series
int C = sc.nextInt(); //common difference
if (A == B) {
System.out.print("YES");
}
n = (((B - A) / C) + 1); // if this formula is right then n should be
//an integer when B is present in series
//or it n should be a float number if B is not in the series
k = (int) n;
if (k == n)
System.out.println("YES");// even when B is NOT in series, "YES" is printed
else
System.out.println("NO");
}
}
}
答案1
得分: 1
Java在整数相除时会舍弃余数,因此尽管将 n
声明为 double
,它始终将具有整数值。您可以用 (1.0 * C)
替换 C
以执行浮点数除法,或者使用取模运算符 %
来完全避开这个问题。
英文:
Java discards the remainder when dividing integers, so despite declaring n
as a double
, it will always have an integer value. You could replace C
with (1.0 * C)
to force floating-point division, or use the modulo operator %
to sidestep the issue entirely.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论