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

Java矩阵查找程序异常:未输入目标值即输出索引问题排查

问题分析与修复

你的代码存在两个核心问题,直接导致程序跳过输入目标数字x的异常:

  1. 内层循环边界错误
    读取矩阵元素和查找元素的内层循环,你都错误地用rows作为循环上限,而非定义好的cols:

    • 若rows > cols:会触发数组越界异常
    • 若rows < cols:程序仅读取矩阵前rows列的元素,剩余输入会被后续的int x=s.nextInt()直接读取——相当于把矩阵里的某个元素当成了目标数字x,自然不会等待你手动输入x
  2. 输入提示缺失与未找到场景无处理
    原代码没有提示用户输入目标数字x,且当x不存在时无任何输出,交互体验差


修复后的代码

package javaFullcourse;

import java.util.Scanner;

public class TwoD {

    public static void main(String[] args) {
        Scanner s = new Scanner(System.in);
        
        // 输入矩阵行列数
        System.out.println("Enter number of rows:");
        int rows = s.nextInt();
        System.out.println("Enter number of columns:");
        int cols = s.nextInt();
        
        // 初始化矩阵并读取元素
        int numbers[][] = new int[rows][cols];
        System.out.println("Enter array elements:");
        for (int i = 0; i < rows; i++) {
            // 内层循环改用cols作为边界
            for (int j = 0; j < cols; j++) {
                numbers[i][j] = s.nextInt();
            }
        }
        
        // 提示输入目标数字x
        System.out.println("Enter the target number x to search:");
        int x = s.nextInt();
        
        // 查找并输出结果
        boolean found = false;
        for (int i = 0; i < rows; i++) {
            // 内层循环改用cols作为边界
            for (int j = 0; j < cols; j++) {
                if (numbers[i][j] == x) {
                    System.out.println("x is found at location(" + i + "," + j + ")");
                    found = true;
                }
            }
        }
        
        // 处理未找到的情况
        if (!found) {
            System.out.println("x is not found in the matrix");
        }
        
        s.close();
    }
}

关键修改说明

  • 将两个内层循环的j < rows改为j < cols,确保完整读取所有矩阵元素,避免后续x被错误赋值
  • 添加明确的输入提示(行列数、目标数字),让用户清晰知道当前需要输入的内容
  • 增加found标记,处理目标数字不存在的场景,避免无输出的情况
  • 关闭Scanner资源,养成规范的编码习惯

内容的提问来源于stack exchange,提问作者David

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 10:50:22