2013-03-26 66 views
1

原來的問題充分利用類的一個部分的字符串其他

所以我是新來的編碼。我可能打了3個月大關。但我喜歡過去我正在上的課程,因爲這些東西真的讓我感興趣。所以我想趁一些代碼來嘗試去理解它。經過大量的谷歌搜索,這是我得到的。該程序假設要求輸入密碼。如果輸入正確的密碼,則會顯示兩個選項。選項1會讓你把信息(名字,姓氏,年齡,手機號碼)。選項2將顯示存儲的信息。除了我想將從A獲得的信息顯示給B的事實之外,目前爲止的所有內容都非常棒。我有兩個獨立的類。 首先是所謂的主(這是主要的方法巫婆正常工作)

import javax.swing.*; 

//Created by: Robert Duval 
//3/26/13 

public class Main 
{ 
    public static void main(String[] args) 
    { 
     String tempString, passWord = "mrGiggles", input = "null"; 

     while(!input.equals(passWord)) //This loop looks for the password 
     { 

     input = JOptionPane.showInputDialog("Hello, please enter password."); 

     if(input.equals(passWord)) //If the password is correct 
     { 
      while(!input.equals("Enter information")||!input.equals("View profile")) //This loop looks to see what to do next 
      { 
       input = JOptionPane.showInputDialog("Welcome\nEnter information\nView profile"); 

       if(input.equals("Enter information")) 
       { 
        display.input(); 
       } 
       else if(input.equals("View profile")) 
       { 
        display.stored(); 
       } 
       else 
       { 
       tempString = "ERROR\nCannot find what you are looking for."; 
       JOptionPane.showMessageDialog(null, tempString); 
       } 
      } 


     } 
     else //If the password is incorrect. 
     { 
      tempString = "In-correct"; 
      JOptionPane.showMessageDialog(null, tempString); 
     } 
    } 
    } 
} 

我的第二類(顯示器)是我已經遇到了問題。我應該讓他們成爲公共字符串嗎?或者是什麼? input()方法填充了我想在stored()方法中使用的字符串。我一直在尋找這一段時間,但我不明白這個回報,什麼不是。如果你能幫助我,並指出我的缺陷,那將是太棒了。

import javax.swing.*; 

//Created by: Robert Duval 
//3/26/13 

public class display 
{ 
    public static void input() //This is the method that will ask for the information 
    { 
     String age="null", cellNumber="null", name="null", lastName="mull", allInfo = name+ "\n" +lastName+ "\n" +age+ "\n" +cellNumber+ "\n"; 

     name = JOptionPane.showInputDialog("Enter the first name"); 
     lastName = JOptionPane.showInputDialog("Enter the last name"); 
     age = JOptionPane.showInputDialog("Enter the age"); 
     cellNumber = JOptionPane.showInputDialog("Enter the cell phone number"); 

     display.stored(); 

    } 


    public static void stored() //This method is asking the user what to show for the input() method. 
    { 
     String loop = "loop", tempString; 


    while(!loop.equals("break")) 
    { 

    tempString = JOptionPane.showInputDialog("What information would you like to see? \nname\nage\ncell number\nall info\nquit"); 

    if(tempString.equals("name")||tempString.equals("Name")||tempString.equals("NAME")) 
    { 
     JOptionPane.showMessageDialog(null, name); //This is where I want to display the name String from input() method 
    } 
    else if(tempString.equals("age")||tempString.equals("Age")||tempString.equals("AGE")) 
    { 
     JOptionPane.showMessageDialog(null, age); //This is where I want to display the age String from input() method 
    } 
    else if(tempString.equals("cell number")||tempString.equals("Cell number")||tempString.equals("cell Number")||tempString.equals("Cell Number")||tempString.equals("cellNumber")||tempString.equals("cellnumber")||tempString.equals("Cellnumber")) 
    { 
     JOptionPane.showMessageDialog(null, cellNumber); //This is where I want to display the cellNumber String from input() method 
    } 
    else if(tempString.equals("all info")||tempString.equals("All info")||tempString.equals("all Info")||tempString.equals("All Info")||tempString.equals("allinfo")||tempString.equals("allInfo")||tempString.equals("Allinfo")||tempString.equals("AllInfo")) 
    { 
     JOptionPane.showMessageDialog(null, allInfo); //This is where I want to display the allInfo String from input() method 
    } 
    else if(tempString.equals("quit")||tempString.equals("Quit")||tempString.equals("QUIT")) 
    { 
     loop = "break"; //Breaks the while loop 
    } 
    else 
    { 
     tempString = "Not a valid answer. \nPlease try again."; 
     JOptionPane.showMessageDialog(null, tempString); 
    } 
} 
} 
} 

修訂問題

好了,所以看問題的答案後,我得到了它非常接近!但由於某些原因,當我查看數據時,它會爲所有內容生成「null」。我在想它,因爲我關閉了方法,然後重新打開它,所以一切都刷新了。 如何保存輸入的信息。離開該方法。回來,但打開顯示,而不是顯示該信息?

下面是更新後的代碼:

主類

import javax.swing.*; 

//Created by Robert Duval 
//3/26/13 

public class Main 
{ 
    public static void main(String[] args) 
    { 
     String tempString, passWord = "mrGiggles", input = "null"; 

     display display = new display(); 

     while(!input.equals(passWord)) //This loop looks for the password 
     { 

      input = JOptionPane.showInputDialog("Hello, please enter password."); 

      if(input.equals(passWord)) //If the password is correct 
      { 
       while(!input.equalsIgnoreCase("Enter information")||!input.equalsIgnoreCase("View profile")) //This loop looks to see what to do next 
       { 
        input = JOptionPane.showInputDialog("Welcome\nEnter information\nView profile"); 

        if(input.equalsIgnoreCase("Enter information")) 
        { 
         display.input(); 
        } 
        else if(input.equalsIgnoreCase("View profile")) 
        { 
         display.stored(); 
        } 
        else 
        { 
         tempString = "ERROR\nCannot find what you are looking for."; 
         JOptionPane.showMessageDialog(null, tempString); 
        } 
       } 
      } 
      else //If the password is incorrect. 
      { 
       tempString = "In-correct"; 
       JOptionPane.showMessageDialog(null, tempString); 
      } 
     } 
    } 
} 

顯示類

import javax.swing.*; 

//Created by: Robert Duval 
//3/26/13 

public class display 
{ 
    String age="null", cellNumber="null", name="null", lastName="mull", allInfo = name+ "\n" +lastName+ "\n" +age+ "\n" +cellNumber+ "\n"; 

    public void input() 
    { 
     name = JOptionPane.showInputDialog("Enter the first name"); 
     lastName = JOptionPane.showInputDialog("Enter the last name"); 
     age = JOptionPane.showInputDialog("Enter the age"); 
     cellNumber = JOptionPane.showInputDialog("Enter the cell phone number"); 
    } 


    public void stored() 
    { 
     String tempString; 


     while(true) 
     { 

      tempString = JOptionPane.showInputDialog("What information would you like to see? \nname\nage\ncell number\nall info\nquit"); 

      if (tempString.equalsIgnoreCase("name")) 
      { 
       JOptionPane.showMessageDialog(null, name); //This is where I want to display the name String from input() method 
      } 
      else if(tempString.equalsIgnoreCase("age")) 
      { 
       JOptionPane.showMessageDialog(null, age); //This is where I want to display the age String from input() method 
      } 
      else if(tempString.equalsIgnoreCase("cell number")) 
      { 
       JOptionPane.showMessageDialog(null, cellNumber); //This is where I want to display the cellNumber String from input() method 
      } 
      else if(tempString.equalsIgnoreCase("all info")||tempString.equalsIgnoreCase("allinfo")) 
      { 
       JOptionPane.showMessageDialog(null, allInfo); //This is where I want to display the allInfo String from input() method 
      } 
      else if(tempString.equalsIgnoreCase("quit")) 
      { 
       break; //Breaks the while loop 
      } 
      else 
      { 
       tempString = "Not a valid answer. \nPlease try again."; 
       JOptionPane.showMessageDialog(null, tempString); 
      } 
     } 
    } 
} 

BTW感謝大家所有幫助。我很感激。

SOLUTION

好的傢伙。我再玩一遍,發現如何讓它工作。感謝所有需要的幫助。

主類

import javax.swing.*; 

//Created by Robert Duval 
//3/26/13 

public class Main 
{ 
    public static void main(String[] args) 
    { 
     String tempString, passWord = "mrGiggles", input = "null"; 

     display display = new display(); 

     while(!input.equals(passWord)) //This loop looks for the password 
     { 

      input = JOptionPane.showInputDialog("Hello, please enter password.\nQuit"); 

      if(input.equals(passWord)) //If the password is correct 
      { 
       while(!input.equalsIgnoreCase("Enter information")||!input.equalsIgnoreCase("View profile")) //This loop looks to see what to do next 
       { 
        input = JOptionPane.showInputDialog("Welcome\nEnter information\nView profile\nLog out"); 

        if(input.equalsIgnoreCase("Enter information")) 
        { 
         display.input(); 
        } 
        else if(input.equalsIgnoreCase("View profile")) 
        { 
         display.stored(); 
        } 
        else if(input.equalsIgnoreCase("log out")) 
        { 
         break; 
        } 
        else 
        { 
         tempString = "ERROR\nCannot find what you are looking for."; 
         JOptionPane.showMessageDialog(null, tempString); 
        } 
       } 
      } 
      else if(input.equalsIgnoreCase("quit")) 
      { 
       break; 
      } 
      else //If the password is incorrect. 
      { 
       tempString = "In-correct"; 
       JOptionPane.showMessageDialog(null, tempString); 
      } 
     } 
    } 
} 

顯示類

import javax.swing.*; 

//Created by: Robert Duval 
//3/26/13 

public class display 
{ 
    String age="null", cellNumber="null", name="null", lastName="null"; 

    public void input() 
    { 
     name = JOptionPane.showInputDialog("Enter the first name"); 
     lastName = JOptionPane.showInputDialog("Enter the last name"); 
     age = JOptionPane.showInputDialog("Enter the age"); 
     cellNumber = JOptionPane.showInputDialog("Enter the cell phone number"); 
    } 


    public void stored() 
    { 
     String tempString, allInfo = name+ "\n" +lastName+ "\n" +age+ "\n" +cellNumber+ "\n"; 


     while(true) 
     { 

      tempString = JOptionPane.showInputDialog("What information would you like to see? \nName\nAge\nCell number\nAll info\nBack"); 

      if (tempString.equalsIgnoreCase("name")) 
      { 
       JOptionPane.showMessageDialog(null, name); 
      } 
      else if(tempString.equalsIgnoreCase("age")) 
      { 
       JOptionPane.showMessageDialog(null, age); 
      } 
      else if(tempString.equalsIgnoreCase("cell number")) 
      { 
       JOptionPane.showMessageDialog(null, cellNumber); 
      } 
      else if(tempString.equalsIgnoreCase("all info")||tempString.equalsIgnoreCase("allinfo")) 
      { 
       JOptionPane.showMessageDialog(null, allInfo); 
      } 
      else if(tempString.equalsIgnoreCase("back")) 
      { 
       break; 
      } 
      else 
      { 
       tempString = "Not a valid answer. \nPlease try again."; 
       JOptionPane.showMessageDialog(null, tempString); 
      } 
     } 
    } 
} 

它運行完美!

P.小號 它不會讓我回答我的問題

+0

對不起,但我不明白你的問題到底是什麼。你能澄清一下嗎? – 2013-03-26 15:49:19

+0

忘記了。現在我已經知道了;-) – 2013-03-26 15:50:13

+1

請注意,不要這樣做:'if(tempString.equals(「name」)|| tempString.equals(「Name」)|| tempString.equals(「NAME」 ))'。嘗試'if(tempstring.equalsIgnoreCase(「name」))'而不是。 – 2013-03-26 16:51:41

回答

0

你需要讓你的顯示器類方法非靜態和使用與領域對象:

public class Display 
{ 
    private String age="null", cellNumber="null", name="null", lastName="mull", allInfo = name+ "\n" +lastName+ "\n" +age+ "\n" +cellNumber+ "\n"; 

    public void input() 
    { 
     name = JOptionPane.showInputDialog("Enter the first name"); 
     lastName = JOptionPane.showInputDialog("Enter the last name"); 
     age = JOptionPane.showInputDialog("Enter the age"); 
     cellNumber = JOptionPane.showInputDialog("Enter the cell phone number"); 

     stored(); 
    }   

    public void stored() 
    { 
     String tempString; 

     while(true) 
     {   
      tempString = JOptionPane.showInputDialog("What information would you like to see? \nname\nage\ncell number\nall info\nquit"); 

      if(tempString.equalsIgnoreCase("name")) 
      { 
       JOptionPane.showMessageDialog(null, name); //This is where I want to display the name String from input() method 
      } 
      else if(tempString.equalsIgnoreCase("age")) 
      { 
       JOptionPane.showMessageDialog(null, age); //This is where I want to display the age String from input() method 
      } 
      else if(tempString.equalsIgnoreCase("cell number")||tempString.equals("Cell number")||tempString.equalsIgnoreCase("cellNumber")) 
      { 
       JOptionPane.showMessageDialog(null, cellNumber); //This is where I want to display the cellNumber String from input() method 
      } 
      else if(tempString.equalsIgnoreCase("all info")||tempString.equalsIgnoreCase("allinfo")) 
      { 
       JOptionPane.showMessageDialog(null, allInfo); //This is where I want to display the allInfo String from input() method 
      } 
      else if(tempString.equalsIgnoreCase("quit")) 
      { 
       break; //Breaks the while loop 
      } 
      else 
      { 
       tempString = "Not a valid answer. \nPlease try again."; 
       JOptionPane.showMessageDialog(null, tempString); 
      } 
     } 
    } 
} 

正如你看到卡恩,我改變了類名從displayDisplay。這是一個Java慣例,用於從變量名稱中分離類名。這些方法不再是靜態的,這意味着你不能在類上調用它們,而只能在該類的對象上調用它們。這樣的對象可以有描述它的條件的字段。要訪問這些字段,您需要非靜態成員。呼叫display.stored()現在只需要stored()就可以調用您剛調用input()的同一對象上的方法。要清除它,你也可以寫this.stored()this總是指向當前的對象。

我還介紹了break命令到Display類中的循環。

讓我們來看看變化在你的主類,以做出什麼現在:

public class Main 
{ 
    public static void main(String[] args) 
    { 
     String tempString, passWord = "mrGiggles", input = "null"; 

     Display display = new Display(); 

     while(!input.equals(passWord)) //This loop looks for the password 
     { 
      input = JOptionPane.showInputDialog("Hello, please enter password."); 

      if(input.equals(passWord)) //If the password is correct 
      { 
       while(!input.equals("Enter information")||!input.equals("View profile")) //This loop looks to see what to do next 
       { 
        input = JOptionPane.showInputDialog("Welcome\nEnter information\nView profile"); 

        if(input.equals("Enter information")) 
        { 
         display.input(); 
        } 
        else if(input.equals("View profile")) 
        { 
         display.stored(); 
        } 
        else 
        { 
         tempString = "ERROR\nCannot find what you are looking for."; 
         JOptionPane.showMessageDialog(null, tempString); 
        } 
       } 
      } 
      else //If the password is incorrect. 
      { 
       tempString = "In-correct"; 
       JOptionPane.showMessageDialog(null, tempString); 
      } 
     } 
    } 
} 

Display display = new Display()創建Display類的一個新對象,並將其與Display類型和名稱display賦給變量。如果您調用display(現在是變量)的方法,則會在變量指向的對象上調用它們,而不是類。

+0

即使它們是靜態方法,也可以通過該類的實例調用它們。 – Smit 2013-03-26 16:01:52

+0

@Smit是的,但你不能使用這些方法中的字段。 – 2013-03-26 16:04:06

+0

我只想指出你的第一個陳述。這是沒有必要的。 – Smit 2013-03-26 16:06:55

相關問題