Как разрешить множественные входные данные от пользователя в JOptionPane

#java #return-value #joptionpane

#java #возвращаемое значение #joptionpane

Вопрос:

Перед тем, как я попытался вставить массив, код возвращал отдельные значения для ввода года, но я бы предпочел, если бы я мог ввести список, а затем отобразить список, если это високосный год. если это не так, это следует игнорировать. Я не использовал массивы с JOptionPane… на самом деле я никогда не использовал массивы, поскольку это моя 4-я неделя использования Java, поэтому я довольно новичок. но определенно готов принять критику и советы. Я хочу стать лучше. Заранее спасибо.

импортируйте javax.swing.JOptionPane;

открытый класс SimpleMath {

 public static int printLeap(int r, int k){  
    if((r % 4 == 0) amp;amp; (r % 100 != 0) || (r % 400 == 0)){
    return r;
    }
    else if ((r % 4 != 0) amp;amp; (r % 100 == 0) || (r % 400 != 0));
    return k;
}


public static void main(String[] args) {


    while (true) { //while the statement is true (so it continues indefinitely until the break occurs).

        String year = JOptionPane.showInputDialog("Enter input years to be tested, when done type End");
        int year[] = new year[10];
        for (int x=0; x<year.length; x  )
        if ("End".equals(year)){ //if the user types End then the loop will break. it allows a string to be input for an int value

            break;
        }   {
              int r = Integer.parseInt(year); 

 int k = 0;
int i = printLeap(r, k);
if (i == 0) {
    break; // or System.out.println("");
}
else

    System.out.println("Leap years entered are:  "   i   x);    


}
}
}
  

}

Комментарии:

1. Я бы рекомендовал начать с основ, а затем перейти к компонентам GUI.

2. Почему бы просто не принять разделенный запятыми список лет и использовать String.split(",") для создания массива из этого?

Ответ №1:

Итак, давайте начнем с некоторых общих элементов обзора кода:

  1. Код отформатирован неправильно, что затрудняет его чтение. Исправление отступа имеет большое значение для того, чтобы сделать его доступным для чтения другим пользователям.
  2. printLeap Метод принимает параметр, который вы вызвали k . Когда вы вызываете свой метод, вы передаете ему значение 0, потому что вы инициализировали k значение 0, и оно никогда не меняется. Итак, это заставляет меня спросить — почему k является параметром, если он никогда не меняется?
  3. У вас есть синтаксические ошибки в вашем коде. Эта строка: int year[] = new year[10]; неверна — она должна быть написана int[] year = new int[10]; , но когда это исправлено, это создает совершенно новую проблему, которая заключается в дублировании переменных. Объявленный вами массив конфликтует с String приведенным выше: String year = JOptionPane.showInputDialog(...);
  4. Позже в коде вы пытаетесь проанализировать year как целое число, чего вы не можете сделать, потому что Integer.parseInt(...) принимает String в качестве параметра не массив.
  5. Имена переменных слишком короткие и не имеют никакого значения. Переменные с именами из одного символа, такими как r , k , i , в большинстве ситуаций не являются хорошей идеей. В общем, единственный раз, когда считается приемлемым использовать имя из одного символа для переменной, находится внутри for определения цикла, такого как: for(int i=0; i<10; i ) потому что это такой распространенный шаблон.

Что касается вашего вопроса, не совсем понятно, о чем вы на самом деле спрашиваете здесь. Похоже, вы хотите принять список лет в качестве входных данных и вывести високосные годы.

Итак, я помогу вам начать, предоставив следующий код:

 //Accept input from the user - a single String containing multiple years separated by commas.
String input = JOptionPane.showInputDialog("Enter years to be tested (comma separated): ");
//Split the String by commas and store the resulting individual years in an array
String[] yearArray = input.split(",");

//Process each year in the array
for(String year: yearArray){
    int intYear = Integer.parseInt(year);
    System.out.println("Here's the integer value: "   intYear);
    //Do more logic here...
}
  

Надеюсь, это поможет!