java - 用构造函数寻找孪生素数
问题描述
只是为了好玩,我想看看我是否可以使用代码来显示孪生素数作为学习构造函数的练习。我虽然使用了一个很好的逻辑,但由于某种原因我无法让它工作。
该程序将打印所有孪生素数(它们之间有 1 个间隙的素数),直到用户输入给定的数字。
package X;
import java.io.*;
import java.util.*;
class TwinPrimeWithConstructor {
int limit;
public void Twin() {
limit = 0;
}
public static void input() {
Scanner input = new Scanner(System.in);
System.out.println("Enter Limit");
int limit = input.nextInt();
}
public void display() {
for (int k = 1; k <= (limit - 2); k++) {
int a = prime(k);
int b = prime(k + 2);
if (a == 1 && b == 1) {
System.out.println(k + "," + k + 2);
}
}
}
public int prime(int n) {
int c = 0;
int d = 0;
for (int i = 1; i <= n; i++) {
if (n % i == 0) {
c = c + 1;
}
}
if (c == 2) {
d = 1;
return d;
} else {
return d;
}
}
void main() {
TwinPrimeWithConstructor ob = new TwinPrimeWithConstructor();
ob.input();
ob.display();
}
}
该程序设法正确检测素数并要求输入,但不提供任何输出。有人可以对我说清楚吗?我还在学习java,所以任何帮助将不胜感激。另外由于我是新手,如果您在我的代码中发现任何不良习惯,请随时告诉我,以便我成为更好的程序员。
解决方案
你没有得到任何输出,因为this.limit
总是0
:
int limit = Input.nextInt();
您应该将输入分配给您的实例字段,而不是新的局部变量。为此,该input
方法不得为static
:
public void input() {
Scanner input = new Scanner(System.in);
System.out.println("Enter Limit");
limit = input.nextInt();
}
推荐阅读
- javascript - Ionic 中需要的 document.scrollTop 值
- php - 虽然命令不断将 x 值增加 2 而不是 1
- android - 使用 RxJava 创建计时器
- javascript - 将功能链接到单击按钮的Javascript
- python - Python - 如何访问 range() 返回的范围类型对象的当前状态?
- r - 如何找到满足条件的组的第一个元素
- livy - 使用 Apache Livy 的 Java 应用程序
- mysql - mysql中有超过2500个表
- ffmpeg - 通过 ffserver 和 ffmpeg 在 RaspberryPi 上进行流式传输
- javascript - KnockoutJS 稍后更新