日期:2014-05-20  浏览次数:20703 次

请老师们 看看 我这里哪里出现问题 ?谢谢。
public class java12 {

public static void main(String[] args) {
int num = Integer.parseInt(args[0]);

if (num <= 6) {
System.out.println("参数错误");
}
if (num % 2 != 0) {
System.out.println("参数错误");
}
java12 c = new java12();
for (int i = 3; i <= num/ 2; i++) {
if (i % 2 == 0) {
continue;

                }
if (c.isPrime(i) && c.isPrime(num - i)) {

System.out.println(i + " " + (num- i) + " " + num);
                                        }
                                 }
                    }
                            
     private boolean isPrime(int n) {
  boolean flag=true;
  for(int i=2;i<n/2;i++){
  if(n%i==0)
  flag=false;
  }
  return flag;
  }
}  
java

------解决方案--------------------
代码没问题啊,你传参数了么?
------解决方案--------------------
isPrime函数有问题
for(int i=2;i<n/2;i++)应该判断到i<=n/2

另外如果"参数错误"可以不往下执行,退出程序
------解决方案--------------------
1楼说的对,没传参数。


javac 路径 java12.java

java 路径 java12 "20"  

应该可以吧
------解决方案--------------------
没有什么问题,运行要输入参数才行
编译:javac java12.java
运行:java java12 "12" "10"
可以多测试几次比如java java12 "13" "11"
------解决方案--------------------
没什么大问题,这块可以优化一下:

    private boolean isPrime(int n) {
        boolean flag=true;
        for(int i=2;i<n/2;i++){
           if(n%i==0){
               flag=false;
               break;//判断非质数了,马上结束。
           }
        }
        return flag;
    }