什么';我的简单Java程序出了什么问题?
它应该只打印100以下的素数,但它只得到数字“3”作为输出。我才刚刚开始学习Java,所以我觉得一切都很好什么';我的简单Java程序出了什么问题?,java,primes,Java,Primes,它应该只打印100以下的素数,但它只得到数字“3”作为输出。我才刚刚开始学习Java,所以我觉得一切都很好 public class ClassesAndObjects { public static void main(String[] args) { Prime n = new Prime(); for (int i = 3; i < 100; i++){ n.Number = i;
public class ClassesAndObjects {
public static void main(String[] args) {
Prime n = new Prime();
for (int i = 3; i < 100; i++){
n.Number = i;
n.factors();
}
}
}
class Prime{
long Number;
long fact;
boolean state = true;
void factors(){
for (fact = 2; fact < Number; fact++){
if (fact != Number){
if (Number % fact == 0){
state = false;
break;
}
}
}
if (state == true){
System.out.println(Number);
}
}
}
公共类类和对象{
公共静态void main(字符串[]args){
素数n=新素数();
对于(int i=3;i<100;i++){
n、 数字=i;
n、 因子();
}
}
}
类素数{
长数;
长期事实;
布尔状态=真;
空隙系数(){
对于(事实=2;事实<数字;事实++){
如果(事实!=数字){
如果(数字%fact==0){
状态=假;
打破
}
}
}
if(state==true){
系统输出打印项次(编号);
}
}
}
添加如下语句:
if (state == true){
System.out.println(Number);
}
state = true; //reset the state variable
在这里,我们将在下一次迭代中将状态变量重置为true。您必须在每次调用开始时将布尔状态重置为true,否则除了第一次调用(当i=3)外,它始终为false
void factors(){
状态=真;
对于(事实=2;事实<数字;事实++){
如果(事实!=数字){
如果(数字%fact==0){
状态=假;
打破
}
}
}
if(state==true){
系统输出打印项次(编号);
}
}
好吧,在factor()方法中,state=true不是默认值。因此,当它第一次运行state=false时(当Number=4时发生),它总是false。只需在代码中添加粗体行,就可以开始了
void factors(){
**boolean state = true;**
for (fact = 2; fact < Number; fact++){
if (fact != Number){
if (Number % fact == 0){
state = false;
break;
}
}
}
if (state == true){
System.out.println(Number);
}
}
void factors(){
**布尔状态=真**
对于(事实=2;事实<数字;事实++){
如果(事实!=数字){
如果(数字%fact==0){
状态=假;
打破
}
}
}
if(state==true){
系统输出打印项次(编号);
}
}
这一定是Java有史以来最糟糕的素数实现之一。我才刚刚开始。我还不知道我在做什么。
void factors(){
**boolean state = true;**
for (fact = 2; fact < Number; fact++){
if (fact != Number){
if (Number % fact == 0){
state = false;
break;
}
}
}
if (state == true){
System.out.println(Number);
}
}