神奇大冒险第二季:关于java输入输出问题(有数据类型转换)

来源:百度文库 编辑:杭州交通信息网 时间:2024/04/28 23:14:17
class ArgumentOutOfBound extends Exception
{
public ArgumentOutOfBound(){}
public ArgumentOutOfBound(String str){super(str);}
}
class prime1
{
boolean prime(int n){

if(n%2==0)
return false;
else
for(int i=2;i<=(int)Math.sqrt(n);i++)
if(n%i==1)
continue;
else
return false;
return true;

}
public static void main(String[] args)
{
byte bnum[]=new byte[20];
System.out.println("请输入一个18位以内的自然数:");
try{
int n=System.in.read(bnum);
String snum=new String(bnum,0,0,n-2);
int num=Integer.parseInt(snum);
if(num<=0) throw new ArgumentOutOfBound();
else if (num==1)
System.out.println(num+"既不是素数又不是合数!");
else if(num==2)
System.out.println(num+"是素数!");
else{

prime1 p=new prime1();
if(p.prime(num))
System.out.println(num+"是素数!");
else
System.out.println(num+"是合数!");
}
}
catch(ArgumentOutOfBound e)
{

System.out.println("您输入的不是自然数!");
}
catch(Exception e)
{

System.out.println("?你为什么不输入自然数啊?");
}

}

}
//请大家看看有什么问题啊,程序运行只能输入9位数,而且素数和合数还判断错,我估计是在屏幕输入字符串后转换成int出了错,请高人指点,或给出更简洁的答案,谢谢

是不是判断输入的数是否素数?
//判断输入的一个数是不是素数
public class IsPrime {
public static void main(String[] args) {
System.out.print("请输入一个大于1的整数:");
int n = SavitchIn.readLineInt();//SavitchIn这个类是受
//键盘输入的!
if (m.isPrime(n)) { //判断是否是素数
System.out.println(n + "是素数!");
} else {
System.out.println(n + "不是素数!");
}}
//判断是否是素数
//是素数为true,否则为false
public boolean isPrime(int n) {
for (int i = 2; i < n; i++) {
if (n % i == 0) {
return false;
}
}
return true;
}