A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 马伟恒 中级黑马   /  2012-4-23 08:28  /  1826 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 马伟恒 于 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的时候出现了问题

3 个回复

正序浏览
if(s = true)这里不能这么写,你要么改成if(s==true)要么改成if(s).同理if(s=false)也要改,=是赋值运算符,是用来赋值的,不是用来判断的,判断相等要有双等号==。你既然判断当s为false时,为素数,那你就应该将s初始化为true,即先假设第一个数不是素数。
回复 使用道具 举报
你的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(个人见解,仅做参考)
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马