2016-06-26 4 views
1

Это полный код, если кто-то может помочь, я в основном пытаюсь сделать проверку доступности электронной почты. Все, что я хочу, слишком помещает переменную строку в мой Jlist, чтобы он выводил все электронные письма и удалялся из JList, если это письмо было проверено.Java - переменная доступа от другого метода в основном методе

class main{ 
    public static void main(String[] args) throws InterruptedException { 
     gui.gui(); 

    } 
}  

|

import org.openqa.selenium.By; 
    import org.openqa.selenium.WebDriver; 
    import org.openqa.selenium.WebElement; 
    import org.openqa.selenium.chrome.ChromeDriver; 
    import java.io.BufferedReader; 
    import java.io.FileNotFoundException; 
    import java.io.FileReader; 
    import java.io.IOException; 

    class tuna { 
     public static void tuna() throws InterruptedException, FileNotFoundException { 
      WebDriver driver = new ChromeDriver(); 
      try (BufferedReader br = new BufferedReader(new FileReader("emails.txt"))) { 
       String line; 


       while ((line = br.readLine()) != null) { 
        driver.get("https://signup.live.com/signup?wa=wsignin1.0&rpsnv=12&ct=1465840004&rver=6.7.6643.0&wp=&wreply=https%3a%2f%2fwww.msn.com%2fen-us%2fhomepage%2fSecure%2fPassport%3fru%3dhttp%253a%252f%252fwww.msn.com%252f%253focid%253dmailsignout%2526pfr%253d1&id=1184&pcexp=True&bk=1465840005&uiflavor=web&uaid=dc151162984741948b8371ce3e0c865e&mkt=EN-US&lc=1033&lic=1"); 
        WebElement Email = driver.findElement(By.id("MemberName")); 
        WebElement Refresher = driver.findElement(By.id("FirstName")); 
        WebElement TakenErrorMsg = driver.findElement(By.id("MemberNameError")); 
        Email.sendKeys(line); 
        Refresher.click(); 
        Thread.sleep(650); 
        if (TakenErrorMsg.isDisplayed()) { 
         System.out.println(line + " is taken!"); 

        } else { 
         System.out.println(line + " is not taken!"); 
        } 
       } 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 

     } 
    } 

|

import javax.swing.*; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import java.io.FileNotFoundException; 


public class gui extends JFrame { 
    public static void gui() { 


     JLabel label1 = new JLabel("Hotmail availability checker"); 
     label1.setVisible(true); 
     label1.setSize(250, 250); 
     label1.setLocation(165, -100); 

     JLabel label2 = new JLabel("Emails unchecked"); 
     label2.setVisible(true); 
     label2.setSize(250, 240); 
     label2.setLocation(40, -82); 




     JButton b1 = new JButton("Start"); 
     b1.setSize(200,50); 
     b1.setLocation(140, 300); 
     b1.setVisible(true); 


     JScrollPane scrollPane = new JScrollPane(); 
     final DefaultListModel emailsChecked = new DefaultListModel(); 
     emailsChecked.addElement("AAA"); 

     final JList list = new JList(emailsChecked); 
     list.setVisible(true); 
     list.setVisible(true); 
     list.setLocation(20,50); 
     list.setSize(150,200); 
     scrollPane.setViewportView(list); 



     JFrame frames = new JFrame(); 
     frames.setTitle("Hotmail availability checker"); 
     frames.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     frames.setLayout(null); 
     frames.setVisible(true); 
     frames.setSize(500, 400); 
     frames.setLocationRelativeTo(null); 
     frames.add(b1); 
     frames.add(label1); 
     frames.add(list); 
     frames.add(label2); 
     frames.add(scrollPane); 


     b1.addActionListener(new ActionListener() { 
      @Override 
      public void actionPerformed(ActionEvent e) { 
       try { 
        tuna.tuna(); 
       } catch (InterruptedException e1) { 
        e1.printStackTrace(); 
       } catch (FileNotFoundException e1) { 
        e1.printStackTrace(); 
       } 


      } 
     }); 
    } 
} 

ответ

3

Если line локальная переменная объявлена ​​в другом методе, то вы не можете получить доступ к нему из метода main.

Локальные переменные в методах доступны только (в ограниченных условиях) из классов, объявленных в рамках локальной переменной; например используя анонимный внутренний класс. Это явно не применимо с помощью метода main.

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

+0

Хорошо, спасибо за отзыв, любая идея, что я мог бы сделать по-другому? тоже сделать эту работу? –

+0

@Macklinguy ваш вопрос очень общий, и это делает очень трудным дать хороший ответ. Можете ли вы предоставить более подробную информацию о том, что должен делать ваш код и каковы требования для вашего кода? Из того, что я вижу в вашем коде, похоже, что вы читаете строки из буферизованного читателя, поэтому я бы предложил, если вам понадобятся эти строки позже, если вы сохраните их в переменной, попросите ваш «другой java-файл» изменить или вернуть переменную и ваш основной метод сохранит ссылку на эту переменную для последующего использования. –

+0

Как я уже сказал: «Я не знаю, что предложить в качестве решения». Для начала, то, что вы пытаетесь сделать, не имеет смысла ... для меня. –

Смежные вопросы