[英]My Java program is testing if integer is divisible by 3 or 5, but is just printing every integer, how do I fix it?
我的代码中根本没有错误,但是根本没有达到我想要的目的。 我知道还有另一个问题与3或5的除数有关,但我认为这个问题不相关,因为我们的编码完全不同。 我还发现这个答案 , 这个其他答案 甚至这个答案都没有帮助我。
无论如何,我试图使用一个简单的布尔表达式来确定一个表达式是否为真,然后确定它是否为真或不打印不同的行。 我想要的外观是这样的:
3 is divisible by 3
3 is not divisible by 5
4 is not divisible by 3
4 is not divisible by 5
5 is not divisible by 3
5 is divisible by 5
and so on...
但是,我得到这个:
3 is divisible by 3
3 is not divisible by 3
3 is divisible by 5
3 is not divisible by 5
and so on...
最初的问题可以在这里找到。 现在,我只是在尝试代码,试图使自己对Java有更好的了解。 我想从一开始就知道如何将可被数字整除的整数与不能被数字整除的整数分开,我发现测试这一点的最佳方法是将行打印出来。 我不知道我是否朝着正确的方向前进。 任何人都可以给我有关我当前拥有的代码的指针,或者一些提示,例如指向该程序必须使用的相应Java命令的链接。 如果您发布的代码行得通,那么我可以看到我应该做什么,那也很好,但是请向我解释一下。 我不想只知道要键入什么,而是想为编程解决问题打下坚实的基础。
很抱歉,如果这是一个可怕的问题,我对编程感到非常陌生,并且完全是自学的。 给我一些指示,我绝对可以改变这个问题!
package multiplesof3and5;
public class InitialProgram {
public static void main(String[] args) {
// TODO Auto-generated method stub
int integer1;
integer1 = 0;
boolean divisibleby3 = (integer1 % 3) == 0;
boolean divisibleby5 = (integer1 % 5) == 0;
for( integer1=0; integer1<1000; integer1++){
if(divisibleby3 = true);{
System.out.println(integer1 + " can be divided by 3");}
if(divisibleby3 = false);{
System.out.println(integer1 + " cannot be divided by 3");}
if(divisibleby5 = true);{
System.out.println(integer1 + " can be divided by 5");}
if(divisibleby5 = false);{
System.out.println(integer1 + " cannot be divided by 5");
}
}
}
}
开始:
if(divisibleby3 = true);{
有一个流浪的分号。 其次, =
是一个赋值,而==
应该用于比较,对于布尔值甚至不是必需的。 使用以下格式:
if(divisibleby3){
和
if(!divisibleby3){ // if not divisible by three
其次,
boolean divisibleby3 = (integer1 % 3) == 0; boolean divisibleby5 = (integer1 % 5) == 0;
需要放在循环内,因为否则它们只会被评估一次(您只检查0是否可被3和5整除,并一次又一次地使用该检查的结果,而不是检查每个整数)。
(可选)除了使用if / if对,还可以在每个循环中使用两次if / else(如果被3整除,则打印,否则将其整除;对于除数,则为5)。
最后,这是将起作用的代码:
public static void main(String[] args) {
for(int integer1 = 0; integer1 < 1000; integer1++){
boolean divisibleby3 = (integer1 % 3) == 0;
boolean divisibleby5 = (integer1 % 5) == 0;
if(divisibleby3) {
System.out.println(integer1 + " can be divided by 3");
} else {
System.out.println(integer1 + " cannot be divided by 3");
}
if(divisibleby5){
System.out.println(integer1 + " can be divided by 5");
} else {
System.out.println(integer1 + " cannot be divided by 5");
}
}
}
您正在确定可除性,然后再开始对数字进行检查:
int integer1;
integer1 = 0;
boolean divisibleby3 = (integer1 % 3) == 0;
boolean divisibleby5 = (integer1 % 5) == 0;
for( integer1=0; integer1<1000; integer1++){
您需要随着integer1
每次更改不断更新可除性,如下所示:
for( integer1=0; integer1<1000; integer1++){
boolean divisibleby3 = (integer1 % 3) == 0;
boolean divisibleby5 = (integer1 % 5) == 0;
刚刚注意到@hexafraction的答案:
您还需要将语句与==
进行比较,现在您只是将布尔值分配为true
或false
,因为您仅使用=
代码中的问题是您永远都不会更改布尔值。 它们始终保持不变,因为它们仅基于初始integer1。 要解决此问题,只需将两个布尔声明都移到for循环中即可。 我在移动设备上,因此无法写下/检查它,但我可以肯定它可以使用。 此致,-Yuval Gat
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.