我做练习准备考试时遇到了问题。 大家会帮帮我吗?非常感谢
写一个程序输入一个100到200(含)范围内的整数。如果用户输入无效输入,则算法应重新提示用户,直到输入有效。然后,您的算法应计算500到1000之间的数字,这是数字输入的倍数。最后,计数应输出给用户。你应该好好利用子模块。
这是我的代码
import java.util.*;
public class Exam3
{
public static void main(String args[])
{
int count = 0;
int input = 0;
Scanner sc = new Scanner(System.in);
System.out.println("Enter number: ");
input = sc.nextInt();
while(input < 100 || input > 200)
{
System.out.println("Enter number between 100 to 200");
input = sc.nextInt();
count ++;
}
System.out.println("count is: " + count);
}
public static void int getCount(int input, int count)
{
for(int i = 499;i <= 1000; i++ )
{
if(i % input==0)
{
count++;
}
}
return count;
}
}
答案 0 :(得分:2)
算法应该是:
输入正确后,找到范围为[500,1000]的所有倍数。数数吧。
检查所有数字的方法很糟糕,正如我们从数学知识中所知,k*a
和k*a + a
之间没有可被a
整除的数字。< / p>
了解并input
我们将temp
的{{1}}扩展为input
input
。如果它在[500, 1000]
范围内,我们会扩大我们的计数器。就这么简单。
public static void main(String args[]) {
int count = 0;
int input = 0;
Scanner sc = new Scanner(System.in);
System.out.println("Enter number: ");
input = sc.nextInt();
while (input < 100 || input > 200) {
System.out.println("Enter number between 100 to 200");
input = sc.nextInt();
count++;
}
System.out.println(input + " fits " + count(input) + " times");
}
private static int count(int input) {
int result = 0;
int temp = input;
while (temp <= 1000) {
if (temp >= 500) {
result++;
}
temp += input;
}
return result;
}
根据您的代码,我看到了一些问题。我会指出它们,因为它对于练习Java很重要。
void
或返回int
。你不能拥有void int
。在这种情况下,我们返回int
,因此int
是返回类型Eclipse
或IntelliJ
(IntelliJ
更专业)。他们会指出未使用的代码块,因此您会知道getCount
没有被调用。