黑马程序员技术交流社区

标题: 一个判断素数的程序出现问题 [打印本页]

作者: 马伟恒    时间: 2012-4-23 08:28
标题: 一个判断素数的程序出现问题
本帖最后由 马伟恒 于 2012-4-23 08:30 编辑



import java.util.*;
public class panduansushu {
public static void main(String args[]){
int x , y , j ;
boolean s = false ;
Scanner i = new Scanner(System.in);
System.out.print("请输入一个数:");
y = i.nextInt();
j = (int) y / 2 ;
for( x = 2 ; x <= j ; x++){
  s = y % x == 0 ;
  //System.out.println("测试1 s为"+s);
  if(s = true){
   System.out.println("此数不为素数");
   }
  else {
   s = false ;
  }
   }     
System.out.println("测试2 s为"+s);  
if(s = false){
    System.out.println("此数为素数");
      }  
  }
}

测试2的时候出现了问题


作者: 袁培育    时间: 2012-4-23 08:43
你的for循环有点乱.。不如把for循环改为这样:
for(x=2;x<=j;x++)
{
   s=y%x==0;
if(s)
{
System.out.println("此数不为素数");
}
else
{
System.out.println("此数是素数");
}
}
s本来就是boolean型,不用s=true;再说你用一个等号是赋值,即s总是true(个人见解,仅做参考)
作者: 蒋亮    时间: 2012-4-23 10:29
if(s = true)这里不能这么写,你要么改成if(s==true)要么改成if(s).同理if(s=false)也要改,=是赋值运算符,是用来赋值的,不是用来判断的,判断相等要有双等号==。你既然判断当s为false时,为素数,那你就应该将s初始化为true,即先假设第一个数不是素数。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2