2012-07-07 75 views
1
import java.io.File; 
import java.io.IOException; 
import java.util.ArrayList; 
import java.util.Scanner; 
import javax.swing.JOptionPane; 

public class Test { 
    private static ArrayList<Countries> arr = new ArrayList<Countries>(); 
    private static ArrayList<Countries> d = new ArrayList<Countries>(); 
    static String country; 
    static String capital; 
    static String cities; 
    static String cevap; 
    static int score =0; 


    public static void main(String args[]) throws IOException{ 
     Scanner keybord = new Scanner(System.in); 
     arr = new ArrayList<Countries>(); 
     d = read("data.txt"); 

     for(int i = 0; i < d.size(); i++){ 
      System.out.print(d.get(i).toString()); 
      cevap = keybord.nextLine(); 
      if(cevap.equalsIgnoreCase(d.get(i).getCapital())){ 
       System.out.println ("The answer is true!\nYou win 10 points"); 
      score += 10; 
      } 
      else{ 
       System.out.println("The answer is not true" + " The answer is " + d.get(i).getCapital() + "\nYou loose 10 points"); 
       score -= 10; 
      } 
      System.out.println("You're score is: " + score); 
      System.out.println(); 
     } 
    } 



    public static ArrayList<Countries> read(String filename) throws IOException{ 
     Scanner scan = new Scanner(new File(filename)); 
     while(scan.hasNext()){ 
      country = scan.nextLine(); //System.out.println(country); 
      String cities1 = scan.nextLine(); //System.out.println(cities1); 
      String cities2 = scan.nextLine(); //System.out.println(cities2); 
      String cities3 = scan.nextLine(); //System.out.println(cities3); 
      String cities4 = scan.nextLine(); //System.out.println(cities4); 
      String capital = scan.nextLine(); //System.out.println(capital); 
      Countries c = new Countries(country, cities1, cities2, cities3, cities4, capital); 
      arr.add(c); 
      scan.nextLine(); 
     } 
     return arr; 
    } 



} 

为了使这个程序的桂,我应该改变主要部分,因为它是下面。因为我认为从我阅读的数据中读取和初始化变量会更方便。或者我应该为Gui创建另一个班级?我应该创建一个用于创建代码的GUI的新类吗?

public static void main(String args[]) throws IOException{ 
     Scanner keybord = new Scanner(System.in); 
     arr = new ArrayList<Countries>(); 
     d = read("data.txt"); 

     for(int i = 0; i < d.size(); i++){ 
      lcountry = new JLabel(d.get(i).getCity1()); 
      label1 = new JLabel(d.get(i).getCity1()); 
      label2 = new JLabel(d.get(i).getCity2()); 
      label3 = new JLabel(d.get(i).getCity3()); 
      label4 = new JLabel(d.get(i).getCity4()); 
+0

如果你想制作一个GUI,你将不得不抛弃该代码并重新开始使用非静态的OOP代码。 – 2012-07-07 21:33:36

回答

3

不,我会建议封装所有的UI东西在一个单独的类。如果你把它放在主要方法中,它的可用性会差很多。

事实上,这适用于所有的课程。一个主要的方法应该非常小,并且只需创建实际工作的类的实例。如果主体很大,你做错了。

无论您使用文本还是图形用户界面,您的问题都应该可用。你可以告诉你封装好的东西,当你可以交换文本用户界面的图形和一切仍然有效。它被称为封装和分层。如果你不能轻松地交换用户界面,那么你做错了。

+0

好吧我会在另一个类的GUI部分,但我不明白的是,我如何访问我在Tester类中读取的数据并将它们显示在UI中? – sergerde 2012-07-07 21:44:48

+0

@ZuZuZzZz:你给测试者类访问器和增变器(getter和setter)方法。 – 2012-07-07 21:47:17