如何解决要求在数组中循环
Q 当存在两个自然数A和B时,A%B是A的余数除以B。例如,7、14、27、38的余数除以3就是1,2,0,2。
接收10个输入后,将它们除以42,得到其余的。然后编写一个程序,打印出有多少个不同的值。 预先输入 39 40 41 42 43 44 82 83 84 85 防爆输出 6
当我编译时,cnt仍为0 我不知道为什么for循环不起作用 请帮助 // codeline
import java.util.Scanner;
public class Modular3052_1 {
public static void main(String[] args) {
Scanner sc= new Scanner(System.in);
boolean mod[] = new boolean [42];
int cnt = 0;
for(int i = 0 ; i<10 ; i++) {
mod[sc.nextInt()%42] = true;
if(mod[i])
cnt++;
}
System.out.println(cnt);
}
}
解决方法
问题是当应该检查mod [sc.nextInt()%42]时,您通过检查mod [i]来增加计数器。最佳解决方案是首先检查mod [sc.nextInt()%42]是否为false,如果是,则递增计数器,然后将其设为true:
for(int i = 0 ; i<10 ; i++) {
int number = sc.nextInt();
if (mod[number%42] == false) cnt++;
mod[number%42] = true;
}
,
我相信您正在比较并在同一个循环中进行输入,从而导致问题的发生:对于i = 5,如果余数变为0,则它永远不会被比较,因为对于i = 5,仅执行语句是if(mod [5])但需要检查的是if(mod [0])是否为真。\ n尝试使用两个循环,一个用于输入,另一个用于比较,您将获得正确的答案。或者,如果您想在单个循环中执行此操作,请尝试使用Set保存值。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。