2017-01-06 2 views
1

Я хочу, чтобы создать условия для переменной «ИНТ Edad», но я запутался ...Создать условие на для (Array - 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! Пожалуйста, используйте английский и в этом вопросе. Люди частично откликаются на вашем родном языке, что им хорошо, но потенциально не полезно для других читателей. Если вы предпочитаете, есть несколько других языковых версий 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 эсов ответа.

+0

Почему бы не поставить условие в 'while':' while (result max) '? Но также защитите от 'min> max'! – weston

+0

Справедливая точка с условием. Я не согласен на проверку 'min> max'. Это нецелесообразно, поскольку автор является единственным пользователем этого api, и параметры хорошо известны. – Niebieski

+0

Целью было бы предотвратить ввод бесконечного цикла. Обратите внимание, что второй 'Integer result =' должен быть просто '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 –