#java #if-statement #arraylist
#java #if-оператор #arraylist
Вопрос:
Я написал код для вывода наибольшего значения последовательности, если числа заданы пользователем. Если пользователь вводит только равные значения, один и тот же вывод будет повторяться по количеству вводов, предоставленных пользователем.
Проблема здесь в том, что, хотя я написал условие if, чтобы избежать повторения одного и того же вывода, но оно не работает. Я был бы очень признателен за помощь.
Проблема:
int y = 0;
for(int i : a){
int v = 0;
if(i == a.get(0)){
y = y 1;
}
for(int o : a){
if(i >= o){
v = v 1;
}
}
if(y == a.size()){
System.out.println("Largest_num = " a.get(0));
}
else if((v == a.size())amp;amp;(y != a.size())){
System.out.println("Largest_num = " i);
}
Весь код:
import java.util.Scanner;
import java.util.ArrayList;
class Noice{
public static void main(String args[]){
Scanner obj = new Scanner(System.in);
System.out.println();
ArrayList<Integer>a = new ArrayList<Integer>();
System.out.print("Enter length: ");
int d = obj.nextInt();
System.out.println();
for(int i = 0; i < d; i ){
int c = i 1;
System.out.print("Num" c " = ");
int b = obj.nextInt();
a.add(b);
}
int y = 0;
for(int i : a){
int v = 0;
if(i == a.get(0)){
y = y 1;
}
for(int o : a){
if(i >= o){
v = v 1;
}
}
if(y == a.size()){
System.out.println("Largest_num = " a.get(0));
}
else if((v == a.size())amp;amp;(y != a.size())){
System.out.println("Largest_num = " i);
}
}
}
}
Ответ №1:
Мне трудно понять, что делает каждая из ваших переменных, рекомендуется использовать имена переменных, которые объясняют их назначение.
Из того, что я могу сказать, y
отслеживает, сколько значений равно первому значению в массиве. Ваше первое условие if затем проверяет, совпадает ли количество идентичных значений ( y
) с размером массива. Если это так, то вам не нужно else if
, и просто else
должно быть достаточно, если я правильно понимаю проблему.
Я также изо всех сил пытаюсь понять, что делают цикл for(int o : a)
и переменная v
. Опять же, это трудно понять, учитывая, что имена ваших переменных не отображают их функциональность, но, похоже, вы можете отказаться от этого вложенного цикла и просто отслеживать текущую максимальную переменную. Раньше for(int i : a)
вы могли добавить что-то вроде int max = a.get(0);
. Затем, в вашем for
цикле, если вы сталкиваетесь с числом больше max
, вы обновляете max
это значение. Однако выполнение этого способа не потребует никаких условий вообще, и вы можете просто вывести max
в конце программы.