You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java编程题:求数组最小正奇数代码自测通过但平台判错求助

问题描述

要求输出数组中最小的正奇数元素,若数组中无正奇数元素则输出0。输入格式为第一行输入数组元素个数,第二行输入数组元素。

用户编写的Java代码自测正常但在线判定平台报错,代码如下:

import java.util.Scanner;
import java.util.Arrays;

public class Main { 
    public static void main(String[] args) { 
        Scanner dashka = new Scanner(System.in);
        int n = dashka.nextInt();
        int[] a = new int[n];
        int min = 0;
        int y = 0;
        for (int i = 0; i < n; i++) {
            a[i] = dashka.nextInt();
            if (i == y && a[i] > 0) {
                min = a[i];
            }
            else if ((a[i] == 0 || a[i] < 0) && i % 2 != 0) {
                y += 2;
            }
            if (i % 2 == 0 && a[i] > 0) {
                if (a[i] < min) {
                    min = a[i];
                }
            }
        }
        System.out.print(min);
    }
}
代码错误分析

你的代码存在核心逻辑偏差,完全不符合题目要求:

  • 仅遍历偶数索引元素:代码只处理i%2==0的位置元素,而题目要求遍历整个数组的所有元素。
  • 未判断元素是否为奇数:题目要求找的是正奇数,但代码仅判断了a[i]>0,完全遗漏了奇数的判定条件(a[i]%2 != 0)。
  • 初始化与更新逻辑混乱:min初始化为0,会干扰正奇数的最小值判断;y变量的逻辑多余,导致初始最小值的赋值逻辑错误。
修正后的代码
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        int[] a = new int[n];
        
        // 初始化min为极大值,确保第一个正奇数能覆盖它
        int min = Integer.MAX_VALUE;
        
        for (int i = 0; i < n; i++) {
            a[i] = scanner.nextInt();
            // 严格判定:正整数且为奇数
            if (a[i] > 0 && a[i] % 2 != 0) {
                if (a[i] < min) {
                    min = a[i];
                }
            }
        }
        
        // 若min未被更新,说明无正奇数,输出0;否则输出最小值
        System.out.println(min == Integer.MAX_VALUE ? 0 : min);
    }
}
测试用例验证
  • 输入1:
5
3 2 5 7 1

输出:1(数组中最小的正奇数为1)

  • 输入2:
4
-1 0 2 4

输出:0(无符合条件的正奇数)

  • 输入3:
3
9 3 5

输出:3

内容的提问来源于stack exchange,提问作者Дина

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 02:43:16