我的作业告诉我要执行以下操作:
创建一个名为IsPrime()的方法,该方法接受一个正整数作为参数。如果数字为素数,则该方法应返回true。 (素数只能被1和它本身整除)。将此方法合并到名为MyMathMethods的类中。在一个名为MainFile的单独类中创建一个main()方法,该类将通过使用输入对话框询问用户输入数字来测试IsPrime(),然后报告该数字是否为素数。
如何连接这两个文件? 这是我的代码:
package x;
import java.util.Scanner;
public class MyMathMethod
{
public static boolean isPrime(int num)
{
int result=0;
System.out.println("enter no");
Scanner s = new Scanner(System.in);
num =s.nextInt();
long sqrt = (int) Math.sqrt(num);
for(long divisor = 2; divisor <= sqrt; divisor++)
{
if(num % divisor == 0)
{
// This only needs to happen once
// for this number to NOT be prime
return false;
}
}
// If we get here, the number is prime.
return true;
}
}
另一个文件是
import x.*;
package y;
public class MainFile {
public static void main(String [] args) {
boolean isNumberPrime;
int num;
MyMathMethod methods = new MyMathMethod();
isNumberPrime = methods.isPrime(num);
{
如果(NUM =真) System.out.println(num +“是Prime Number”); 其他 System.out.println(num +“不是Prime Number”); } } }
提前致谢。
答案 0 :(得分:2)
你想从另一个类的main中调用方法isPrime()吗?
当他们在同一个包中时,你必须创建一个MyMathMethods类的新实例并调用方法isPrime()。当他们在不同的班级时,你必须导入失踪的班级,并按照上述方式进行。如果您不手动导入它,可能您的IDE将为您执行或要求它。
第一个文件:
package x;
public class MyMathMethods {
public boolean isPrime(int number) {
//your code here
return false;
}
}
第二个:
package y;
import x.* //importing all files from the package x
//if your class MyMathMethods is in the same package, you don't need that
public class MainFile {
public static void main(String [] args) {
int number = 20;
boolean isNumberPrime;
MyMathMethods methods = new MyMathMethods();
isNumberPrime = methods.isPrime(number); //here the result if it's prime
}
}
编辑:我会尝试修复您的代码。
如果您想让方法保持静态,可以调用它:
MyMathMethods.isPrime(numer);
无需创建新的实例。
下一个问题:为什么要将未初始化的变量(num)传递给函数并尝试从此方法的输入中获取此值?嗯,这不是一个好习惯。我宁愿建议从main中获取用户的输入(直接在main中调用另一个函数的main中),然后将值传递给isPrime()。
package y;
import x.*
public class MainFile {
public static void main(String [] args) {
int num;
Scanner s = new Scanner(System.in);
num =s.nextInt();
if(MyMathMethods.isPrime(num)) {
//if true, your code;
} else {
//false, your code;
}
}
}
package x;
public class MyMathMethod {
public static boolean isPrime(int num) {
if (num <= 1) {
return false;
}
for (int i = 2; i < Math.sqrt(num); i++) {
if (num % i == 0) {
return false;
}
}
return true;
}
}
您的算法因许多数字而失败,例如0,1,2。嗯,对于这个值,它甚至没有返回任何值。请始终保护您的方法免受任何可能的错误参数的影响。