使用java,新建工程1,编写Math1类,实现isSXH(int n) 方法,该方法可以判断水仙花数,如果是则返回true,不是返回false。 将此工程打包成jar包,在工程2中,从键盘输入一个任意值,调用isSXH方法判断是否是水仙花数。
时间: 2024-06-13 21:08:27 浏览: 60
水仙花数Java程序实现
以下是Java实现水仙花数的代码:
在工程1中,新建Math1类,实现isSXH(int n)方法:
```java
public class Math1 {
public static boolean isSXH(int n) {
int geWei = n % 10;
int shiWei = n / 10 % 10;
int baiWei = n / 100;
if ((int) (Math.pow(geWei, 3) + Math.pow(shiWei, 3) + Math.pow(baiWei, 3)) == n) {
return true;
} else {
return false;
}
}
}
```
在工程1中,将Math1类打包成jar包:
1.在Eclipse中,右键点击Math1类,选择Export -> Java -> JAR file。
2.在弹出的窗口中,选择要导出的jar包的位置和名称,点击Next。
3.在弹出的窗口中,选择要导出的类和资源,点击Finish。
在工程2中,从键盘输入一个任意值,调用isSXH方法判断是否是水仙花数:
```java
import java.util.Scanner;
import java.util.jar.JarFile;
import java.util.jar.JarEntry;
import java.io.IOException;
import java.lang.reflect.Method;
public class Math2 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("请输入一个三位数:");
int num = input.nextInt();
input.close();
try {
JarFile jarFile = new JarFile("Math1.jar");
JarEntry jarEntry = jarFile.getJarEntry("Math1.class");
Class<?> clazz = Class.forName("Math1", true, new JarClassLoader(jarFile, jarEntry));
Method method = clazz.getMethod("isSXH", int.class);
boolean result = (boolean) method.invoke(null, num);
if (result) {
System.out.println(num + "是水仙花数。");
} else {
System.out.println(num + "不是水仙花数。");
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
class JarClassLoader extends ClassLoader {
private JarFile jarFile;
private JarEntry jarEntry;
public JarClassLoader(JarFile jarFile, JarEntry jarEntry) {
this.jarFile = jarFile;
this.jarEntry = jarEntry;
}
@Override
protected Class<?> findClass(String name) throws ClassNotFoundException {
try {
byte[] bytes = new byte[(int) jarEntry.getSize()];
jarFile.getInputStream(jarEntry).read(bytes);
return defineClass(name, bytes, 0, bytes.length);
} catch (IOException e) {
throw new ClassNotFoundException();
}
}
}
```
阅读全文