2017-01-06 46 views
1

我想創建一個變量「INT EDAD」的條件,但我很困惑...創建條件(陣列 - JAVA)

我需要一個條件,這條線尤其

Integer.parseInt(JOptionPane.showInputDialog("Ingrese edad")), 

這是一個int變量,我想驗證它是在0到100之間,然後給用戶一個消息並再次詢問這個變量。

package pruebas; 

import javax.swing.JOptionPane; 

public class Persona { 

public static void main(String[] args) { 
    Estudiante [] misEstudiantes2 = new Estudiante[1]; 

    for(int i = 0; i< misEstudiantes2.length; i++){ 

     misEstudiantes2[i] = new Estudiante(JOptionPane.showInputDialog("Ingrese nombre").toUpperCase(), 
      Integer.parseInt(JOptionPane.showInputDialog("Ingrese edad")), 
      JOptionPane.showInputDialog("Ingrese carrera"), 
      Integer.parseInt(JOptionPane.showInputDialog("Ingrese año")), 
      Integer.parseInt(JOptionPane.showInputDialog("Ingrese mes")), 
      Integer.parseInt(JOptionPane.showInputDialog("Ingrese dia")), 
      Double.parseDouble(JOptionPane.showInputDialog("Ingrese sueldo"))); 

     misEstudiantes2[i].estableceSueldo(1); 

     System.out.println("Objetos del array \n" + misEstudiantes2[i].dameNombre() + "\n" + misEstudiantes2[i].dameSueldo() + "\n" + 
     misEstudiantes2[i].dameCarrera() + "\n" + misEstudiantes2[i].dameFecha() + "\n" + "La edad es " + misEstudiantes2[i].dameEdad()); 
    } 
} 
} 
+0

歡迎使用stackoverflow!請在問題代碼中使用英文。人們用你的母語部分回覆,這對他們很好,但對其他讀者可能沒有用。如果你喜歡有幾個其他語言版本的計算器:http://meta.stackoverflow.com/a/297734/360211 – weston

回答

1

如果您在構建新學生對象之前將所有用戶輸入存儲到變量中,這是可能的。

String name = JOptionPane.showInputDialog("Ingrese nombre").toUpperCase(); 
int age = Integer.parseInt(JOptionPane.showInputDialog("Ingrese edad")); 
String career = JOptionPane.showInputDialog("Ingrese carrera"); 
int year = Integer.parseInt(JOptionPane.showInputDialog("Ingrese año")); 
int month = Integer.parseInt(JOptionPane.showInputDialog("Ingrese mes")); 
int day = Integer.parseInt(JOptionPane.showInputDialog("Ingrese dia")); 
double salary = Double.parseDouble(JOptionPane.showInputDialog("Ingrese sueldo"))); 

misEstudiantes2[i] = new Estudiante(name, age, career, year, month, day, salary); 

從這裏,你可以在你的變量周圍進行必要的檢查。例如:

int age = Integer.parseInt(JOptionPage.showInputDialog("Ingrese edad")); 
while (age < 0 || age > 100) { // in case they put in an invalid number 
           // try again, with a notice about the range 
    age = Integer.parseInt(JOptionPage.showInputDialog("Ingrese edad, mas de 0 y menos de 100")); 
} 
1

試着寫一個方法,爲你做。例如:

public static Integer promptForInteger(int min, int max, String message, String message2) { 
    Integer result = Integer.parseInt(JOptionPane.showInputDialog(message)); 
    while(result < min || result > max) { 
    result = Integer.parseInt(JOptionPane.showInputDialog(message2)); 
    } 
    return result; 
} 

當您創建對象,然後調用它:

misEstudiantes2[i] = new Estudiante(JOptionPane.showInputDialog("Ingrese nombre").toUpperCase(), 
            promptForInteger(0, 100, "Ingrese edad", "Ingrese edad, mas de 0 y menos de 100"), 
            JOptionPane.showInputDialog("Ingrese carrera"), 
            Integer.parseInt(JOptionPane.showInputDialog("Ingrese año")), 
            Integer.parseInt(JOptionPane.showInputDialog("Ingrese mes")), 
            Integer.parseInt(JOptionPane.showInputDialog("Ingrese dia")), 
            Double.parseDouble(JOptionPane.showInputDialog("Ingrese sueldo"))); 

我不知道你的母語,所以我使用的字符串從johnhopkins ES答案。

+0

爲什麼不把條件放在while中:while(result max)'?但也保護'min> max'! – weston

+0

公平點與條件。我不同意'min> max'檢查。它沒有任何作用,因爲作者是這個API的唯一用戶,並且參數名稱很好。 – Niebieski

+0

目的是爲了防止進入無限循環。請注意,第二個「整數結果=」必須只是'result =' – weston

1

做用戶一個忙,並提供他們一個微調選擇號碼。

import javax.swing.*; 

class VerifiedIntegerInRange { 

    public VerifiedIntegerInRange() { 
     SpinnerNumberModel numberRange = new SpinnerNumberModel(-1,-1,100,1); 
     JSpinner spinner = new JSpinner(numberRange); 
     int i = numberRange.getNumber().intValue(); 
     while (i<0) { 
      JOptionPane.showMessageDialog(
       null, 
       spinner, 
       "Select a number between 0 & 100", 
       JOptionPane.QUESTION_MESSAGE); 
      i = numberRange.getNumber().intValue(); 
     } 
     System.out.println("User chose " + i); 
    } 

    public static void main(String[] args) { 
     Runnable r = new Runnable() { 
      public void run() { 
       new VerifiedIntegerInRange(); 
      } 
     }; 
     SwingUtilities.invokeLater(r); 
    } 
} 
+1

在這裏使用微調+1是一個好主意 –