我编写了一个代码来输出一个序列的最大值,如果用户给出了数字。如果用户只输入相等的值,则相同的输出将重复用户给定的输入数。
这里的问题是,即使我写了一个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())&&(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())&&(y != a.size())){
System.out.println("Largest_num = "+i);
}
}
}
}
1条答案
按热度按时间7gcisfzg1#
我很难理解每个变量都在做什么,使用变量名来解释它的用途是一种很好的做法。
据我所知,
y
跟踪有多少个值等于数组中的第一个值。第一个if条件检查相同值的数目(y
)与数组的大小相同。如果是这样的话,你就不需要else if
,只是一个else
如果我正确理解这个问题,就足够了。我也在努力理解循环是什么
for(int o : a)
和变量v
你在做什么。同样,由于变量名没有描述它们的功能,所以很难理解,但似乎可以放弃嵌套循环,只跟踪正在运行的最大变量。之前for(int i : a)
,可以添加如下内容int max = a.get(0);
. 那么,在你的for
循环,如果你遇到一个大于max
,你更新了吗max
有这个价值。不过,这样做完全不需要任何条件,您只需输出max
在节目的最后。