java算法困惑

loong0306 2015-01-25 11:49:00


题目在上面了。麻烦大家看下我写的代码,为什么当 输入的第一个数字为0的时候就是错误的呢

import java.util.Scanner;

public class Main {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int a = input.nextInt();
int ary[] = new int[20];
int b = 0;
int count1 = 0, count2 = 0;
for (int i = 0; i < a; i++) {
ary[i] = input.nextInt();
}
if (a == 1) {
System.out.println(ary[0]);
} else {
for (int i = 0; i < a; i++) {
for (int j = i + 1; j < a - 1; j++) {
if (ary[i] == ary[j]) {
count1++;
}
if (count1 > count2) {
b = i;
count2 = count1;
}
count1 = 0;
}
}
System.out.println(ary[b]);
}
}
}

谢谢
...全文
185 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
Falleyes 2015-01-26
  • 打赏
  • 举报
回复
你所说输入第一个数字是用户输入数字的个数,还是录入数组时的输入第一个数字?
录入数字时第一个是0没有问题:

你的意思是输入个数输入为0时错误?
这个时候你应该判断输入,如果输入为0,就不应该输出,直接return主函数。
邹邹wl 2015-01-26
  • 打赏
  • 举报
回复
for (int j = i + 1; j < a - 1; j++) {
这行j<a才是正确的,j<a-1 数组最后一个没有参与计算,所以你这个输出是0。 0 0 1 1 1 你这个结果还是0 1 0 0 你这个结果是1。
loong0306 2015-01-26
  • 打赏
  • 举报
回复
引用 1 楼 Falleyes 的回复:
你所说输入第一个数字是用户输入数字的个数,还是录入数组时的输入第一个数字? 录入数字时第一个是0没有问题: 你的意思是输入个数输入为0时错误? 这个时候你应该判断输入,如果输入为0,就不应该输出,直接return主函数。
您好,说是时候有些有误,比如用户输入5以后,要求需要输入3个内容。 如果输入 0 1 1的话 结果会是 0

62,616

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧