2013-03-18 21 views
2

我一直在這裏一段時間,我越來越困惑。有幾件事情我要完成:需要幫助通過變量和標籤JPanel

  1. 加2個標籤的JTextField 1.首先要求他們輸入一個電子郵件。第二個表示@ address.com已經爲他們輸入。

  2. 我很困惑如何傳遞字符串變量,也許我應該只有一種方法?

    import javax.swing.*; 
    import java.awt.*; 
    
    public class Email { 
    
        public static void main(String[] args) { //main method 
    
         //get user input 
         JPanel panel = new JPanel(); //create new JPanel 
    
         JTextField field1 = new JTextField(20); //create a field for email and show 20 characters 
         panel.add(field1); 
    
         JTextField field2 = new JTextField(6); //create a field for grade and show to 6 characters 
         panel.add(field2); 
    
         int iValue = JOptionPane.showConfirmDialog (
         null, 
         panel, 
         "Please enter students email adress and test grade", 
         JOptionPane.OK_OPTION); //create button in panel 
    
         if (iValue == JOptionPane.OK_OPTION) { 
    
          //capture email address as String 
          String sEmail = field1.getText() + "@address.com"; 
    
          //capture numerical grade input and convert it to a float  
          float fGrade = Float.parseFloat(field2.getText()); 
         } 
        } //end main 
    
    
        public void convertGrades(float fGrade) { 
    
         /***"shortcut if" grade conversion*********** 
         String sLetterGrade = (fGrade >= 97) ? "A+" : 
         (fGrade >= 94) ? "A" : 
         (fGrade >= 90) ? "A-" : 
         (fGrade >= 87) ? "B+" : 
         (fGrade >= 84) ? "B" : 
         (fGrade >= 80) ? "B-" : 
         (fGrade >= 77) ? "C+" : 
         (fGrade >= 74) ? "C" : 
         (fGrade >= 70) ? "C-" : 
         (fGrade >= 67) ? "D+" : 
         (fGrade >= 64) ? "D" : 
         (fGrade >= 60) ? "D-" : "F"; 
         *************************************************************************/ 
    
    
         //experimental grade conversion 
         // Determine letter grade 
         String sAlphaGrade = (fGrade >= 90) ? "A" : 
         (fGrade >= 80) ? "B" : 
         (fGrade >= 70) ? "C" : 
         (fGrade >= 60) ? "D" : "F"; 
         //determine + or - 
         if (fGrade >= 60) { 
          float fGradeModifier = (fGrade % 10); 
          String sAlphaModifier = (fGradeModifier >= 7) ? "+" : 
          (fGradeModifier >= 4)? "" : "-"; 
    
          //concatenate letter grade and modifier 
          String sLetterGrade = sAlphaGrade + sAlphaModifier; 
    
         } // end if 
    
    
         String sResults = getInput.sEmail + "\n" + 
         sMessage + "\n" + 
         "your test score is: " + fGrade + "\n" + 
         "your letter grade is: " + sLetterGrade; 
    
    
         JOptionPane.showMessageDialog(null, sOutput,"Email and Grade", 
         JOptionPane.INFORMATION_MESSAGE); 
    
        } //end convertGrades 
    } //end class Email 
    
+0

請將您的問題的格式的代碼。 – 2013-03-18 00:03:32

+0

謝謝阿里我正在嘗試更好地格式化代碼 – JAstuccio 2013-03-18 00:14:04

+0

什麼是'Message'和'sOutput'?我沒有看到他們在任何地方宣佈。 – Alden 2013-03-18 01:33:55

回答

2

您的代碼與在那裏你聲明和訪問變量的一些問題。 sMessagesOutput永遠不會在任何地方聲明或賦值。此外,您嘗試訪問sEmailconvertGrades方法時,它已經在main進行了申報,並嘗試訪問if塊它在宣佈sLetterGrade之外。

如果你想在你的convertGrades方法使用sEmail,你當您調用它時需要將它傳遞給方法。必須在if塊之外聲明sLetterGrade以供稍後使用。另外,您從來沒有從main方法中實際調用convertGrades,因此不會執行任何代碼。

要標記您的JTextField,我建議將所有標籤和字段放在Box。這將確保他們都保持在正確的順序。

這裏是你的代碼編輯成包括所有這些變化:

import javax.swing.*; 
    import java.awt.*; 

    public class Email { 

     public static void main(String[] args) { //main method 

      //get user input 
      JPanel panel = new JPanel(); //create new JPanel 


      Box field1Box = Box.createHorizontalBox(); // Box to hold field1 and its labels 
      field1Box.add(new JLabel("Enter email: ")); // JLabels can be added directly; we don't need to keep a reference 
      JTextField field1 = new JTextField(20); //create a field for email and show 20 characters 
      field1Box.add(field1); 
      field1Box.add(new JLabel("@address.com")); 
      panel.add(field1Box); // Adds the Box containing field1 and the two labels to panel 


      JTextField field2 = new JTextField(6); //create a field for grade and show to 6 characters 
      panel.add(field2); 

      int iValue = JOptionPane.showConfirmDialog (
      null, 
      panel, 
      "Please enter student's email adress and test grade", 
      JOptionPane.OK_OPTION); //create button in panel 

      if (iValue == JOptionPane.OK_OPTION) { 

       //capture email address as String 
       String sEmail = field1.getText() + "@address.com"; 

       //capture numerical grade input and convert it to a float  
       float fGrade = Float.parseFloat(field2.getText()); 

       //call convertGrades to display the results 
       convertGrades(fGrade, sEmail); 
      } 
     } //end main 


     // convertGrades must be static to be called from main 
     public static void convertGrades(float fGrade, String sEmail) { 

      /***"shortcut if" grade conversion*********** 
      String sLetterGrade = (fGrade >= 97) ? "A+" : 
      (fGrade >= 94) ? "A" : 
      (fGrade >= 90) ? "A-" : 
      (fGrade >= 87) ? "B+" : 
      (fGrade >= 84) ? "B" : 
      (fGrade >= 80) ? "B-" : 
      (fGrade >= 77) ? "C+" : 
      (fGrade >= 74) ? "C" : 
      (fGrade >= 70) ? "C-" : 
      (fGrade >= 67) ? "D+" : 
      (fGrade >= 64) ? "D" : 
      (fGrade >= 60) ? "D-" : "F"; 
      *************************************************************************/ 


      //experimental grade conversion 
      // Determine letter grade 
      String sAlphaGrade = (fGrade >= 90) ? "A" : 
      (fGrade >= 80) ? "B" : 
      (fGrade >= 70) ? "C" : 
      (fGrade >= 60) ? "D" : "F"; 
      String sLetterGrade; // This needs to be visible outside of the if 
      //determine + or - 
      if (fGrade >= 60) { 
       float fGradeModifier = (fGrade % 10); 
       String sAlphaModifier = (fGradeModifier >= 7) ? "+" : 
       (fGradeModifier >= 4)? "" : "-"; 

       //concatenate letter grade and modifier 
       sLetterGrade = sAlphaGrade + sAlphaModifier; 

      } // end if 
      else { 
       // sLetterGrade still needs to get a value 
       sLetterGrade = sAlphaGrade; 
      } 


      String sResults = sEmail + "\n" + 
      // sMessage has been commented out so the program will compile and run 
      // Uncomment it if you declare it and give it a value somewhere. 
      // sMessage + "\n" + 
      "your test score is: " + fGrade + "\n" + 
      "your letter grade is: " + sLetterGrade; 


      // Assuming sOutput was meant to mean sResults 
      JOptionPane.showMessageDialog(null, sResults,"Email and Grade", 
      JOptionPane.INFORMATION_MESSAGE); 

     } //end convertGrades 
    } //end class Email 
+0

謝謝大家。我今天下午再看一遍。 – JAstuccio 2013-03-25 17:08:47