我被指派为类编写一个计算倍数的java程序。该程序以三个整数作为输入:低,高,x。然后程序输出x在低和高之间的倍数。
如果输入是: 1,10,2
产出如下:5
我的老师有分配问题的倾向,我们在课堂上没有讨论过,我不知道从哪里开始。我没有要求完整的代码,只是问如何设置问题
我不知道如何通过程序来遵循我的逻辑:到目前为止,我所拥有的是
import java.util.Scanner;
public class LabProgram {
public static void main(String[] args) {
Scanner scnr = new Scanner(System.in);
int low, high, x;
int count = 0;
low = scnr.nextInt();
high = scnr.nextInt();
x = scnr.nextInt();
for(int i = low; i <= high; i++){
if(i % x == 0){
count++;
}
if (i % x != 0){
//System.out.println(count);// someone suggested to move this
}
}
System.out.println(count);
}
}
~~~~~~
If I input 1, 10, 2
My output is 01234
Moved the print of count outside of the loop... man I am tired.
FINAL EDIT: This code works, it accomplishes the goal. Thank you to @charisma and everyone else that helped me understand what was going on here. I am new to java but determined to learn more! Thanks all!!!!!发布于 2021-03-06 06:37:09
您可以使用类似于w3schools中的以下代码的扫描器类输入数字:
import java.util.Scanner; // Import the Scanner class
class Main {
public static void main(String[] args) {
Scanner myObj = new Scanner(System.in); // Create a Scanner object
System.out.println("Enter username");
String userName = myObj.nextLine(); // Read user input
System.out.println("Username is: " + userName); // Output user input
}
}low、high和x可以是数据类型的int。
要检查low和high之间的数字是x的倍数,可以使用for循环。您可以声明一个新变量count,它可以在每次count++循环找到多个变量时使用for递增。%运算符可用于查找倍数。
可以使用System.out.println(" " + );输出
编辑:
%操作符需要两个操作数,并给出剩余的操作数。所以,如果是i % x == 0,这意味着i是x的倍数,我们做count++。
i的值将贯穿low到high。
for (i = low; i <= high; i++) {
if (i % x == 0) {
count++;
}
}发布于 2021-03-06 07:45:15
一旦您进入了基本实现(正如魅力所解释的那样),您会注意到,如果数字很大,可能需要很长时间:您有循环的high - low + 1迭代。因此,您可以开始优化,以便在固定时间内获得结果:
qLow * x,其中qLow是rational商((double) low) / x的顶棚,qHigh * x,其中qHigh是rational ((double) high) / x的底层,Java提供了一个Math.floor()和Math.ceil(),但是您可以使用整数除法和使用符号来获得相同的结果:
final int qLow = -(-low / x);
final int qHigh = high / x;现在,您只需计算qLow和qHigh包含的整数的数量。
return qHigh - qLow + 1;关注点:如果是x < 0,那么您需要使用qLow - qHigh,所以使用qLow - qHigh更安全:
return x > 0 ? qHigh - qLow + 1 : qLow - qHigh + 1;x == 0案件应该在一开始就处理好。
发布于 2022-03-06 19:15:30
将count++;放在最后一个print语句之后
https://stackoverflow.com/questions/66502977
复制相似问题