Java: Не можете получить доступ к переменной? - PullRequest
1 голос
/ 16 апреля 2011

Так что у меня возникла небольшая проблема при попытке сравнить две строки, объявленные в классе Main. Я бездельничал с этим, и я действительно не могу заставить это работать! Проблема в выражении if (), где я сравниваю переменные ...

public class Main {

    public String oldContent = "";
    public String newContent = "";

    public static void main(String[] args) throws InterruptedException {
        Main downloadPage = new Main();
        downloadPage.downloadPage();
        oldContent = newContent;

        for (;;) {
            downloadPage.downloadPage();
            if (!oldContent.equals(newContent)) { // Problem
                System.out.println("updated!");
                break;
            }
            Thread.currentThread().sleep(3000);
        }
    }

    private void downloadPage() {
        // Code to download a page and put the content in newContent.
    }
}

Ответы [ 4 ]

3 голосов
/ 16 апреля 2011

переменные являются членами экземпляра, тогда как for происходит в статическом методе. попробуйте переместить действительную функцию в метод экземпляра (не статический) или, наоборот, сделайте элементы данных статичными.

2 голосов
/ 16 апреля 2011

Вы можете использовать имя созданного вами объекта (downloadPage) для доступа к параметрам: в основной функции используйте только имена параметров:

downloadPage.oldContent
downloadPage.newContent
1 голос
/ 16 апреля 2011

Переменные находятся внутри объекта Main:

public static void main(String[] args) throws InterruptedException {
    Main downloadPage = new Main();
    downloadPage.downloadPage();  // Access them like you accessed the method
    downloadPage.oldContent = downloadPage.newContent;

    for (;;) {
        downloadPage.downloadPage();
        if (!downloadPage.oldContent.equals(downloadPage.newContent)) {
            System.out.println("updated!");
            break;
        }
        Thread.currentThread().sleep(3000);
    }
}

Подумайте об использовании геттеров и сеттеров вместо того, чтобы выставлять поля.

0 голосов
/ 16 апреля 2011
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...