Нахождение двух простых чисел с конструктором - PullRequest
0 голосов
/ 02 октября 2018

Ради интереса я хотел посмотреть, смогу ли я использовать код для отображения двойных простых чисел в качестве практики для изучения конструкторов.Я хоть и использовал хорошую логику, но по какой-то причине не смог заставить ее работать.

Эта программа предназначена для печати всех двойных простых чисел (простых чисел с 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, поэтому любая помощь будет оценена.Кроме того, так как я новичок, если вы обнаружите какие-либо вредные привычки в моем коде, пожалуйста, не стесняйтесь сказать мне, чтобы я мог стать лучшим программистом.

1 Ответ

0 голосов
/ 02 октября 2018

Вы не получаете никакого вывода, потому что 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();
}
...