#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:
Итак, давайте начнем с некоторых общих элементов обзора кода:
- Код отформатирован неправильно, что затрудняет его чтение. Исправление отступа имеет большое значение для того, чтобы сделать его доступным для чтения другим пользователям.
printLeap
Метод принимает параметр, который вы вызвалиk
. Когда вы вызываете свой метод, вы передаете ему значение 0, потому что вы инициализировалиk
значение 0, и оно никогда не меняется. Итак, это заставляет меня спросить — почемуk
является параметром, если он никогда не меняется?- У вас есть синтаксические ошибки в вашем коде. Эта строка:
int year[] = new year[10];
неверна — она должна быть написанаint[] year = new int[10];
, но когда это исправлено, это создает совершенно новую проблему, которая заключается в дублировании переменных. Объявленный вами массив конфликтует сString
приведенным выше:String year = JOptionPane.showInputDialog(...);
- Позже в коде вы пытаетесь проанализировать
year
как целое число, чего вы не можете сделать, потому чтоInteger.parseInt(...)
принимаетString
в качестве параметра не массив. - Имена переменных слишком короткие и не имеют никакого значения. Переменные с именами из одного символа, такими как
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...
}
Надеюсь, это поможет!