当前位置: 首页 > news >正文

Java异常:java.util.NoSuchElementException

这个异常:

java.util.NoSuchElementExceptionat java.util.ArrayDeque.removeFirstat java.util.ArrayDeque.pop

说明调用了 stack.pop() 时,栈已经空了,而 ArrayDeque.pop() 在栈空时会抛出 NoSuchElementException


✅ 根本原因

没有在 pop() 前判断栈是否为空,导致比如输入字符串是 ")""}}" 这种右括号先出现的情况时,程序崩溃。


✅ 正确做法

pop() 前加一句判断:

if (stack.isEmpty()) return false;

✅ 修改后的完整代码(已修复所有问题)

import java.util.Deque;
import java.util.ArrayDeque;class Solution {public boolean isValid(String s) {Deque<Character> stack = new ArrayDeque<>();for (char c : s.toCharArray()) {if (c == '(' || c == '{' || c == '[') {stack.push(c);} else {if (stack.isEmpty()) return false;char top = stack.pop();if (!isMatching(top, c)) return false;}}return stack.isEmpty();}private boolean isMatching(char open, char close) {return (open == '(' && close == ')') ||(open == '{' && close == '}') ||(open == '[' && close == ']');}
}

✅ 总结

异常原因解决方法
空栈调用 pop()pop() 前判断 stack.isEmpty()
保证健壮性所有右括号出现前都要确保栈不为空

现在这段代码可以处理所有合法和非法输入,不会抛出异常。

http://www.dtcms.com/a/307833.html

相关文章:

  • 【数据结构初阶】--二叉树(六)
  • 学习笔记《区块链技术与应用》第4天 比特币脚本语言
  • window中qemu使用(安装ubuntu系统)
  • 嵌入式系统常用架构
  • python中各种装饰器的作用
  • 图像处理中级篇 [2]—— 外观检查 / 伤痕模式的原理与优化设置方法
  • 【n8n教程笔记——工作流Workflow】文本课程(第二阶段)——1 理解数据结构 (Understanding the data structure)
  • 【单片机】【分布式】从单机到分布式:Redis如何成为架构升级的关键力量
  • uniapp开发App如何使用正确高德地图。uni.chooseLocation数据不展示问题,uni.getLocation不生效问题。
  • Leetcode-206.反转链表
  • linux运维学习第十三周
  • 数据库学习------数据库隔离类型及其与事务特性
  • 会议室预定系统核心技术:如何用一行SQL解决时间冲突检测难题
  • Spark SQL 的 SQL 模式和 DSL模式
  • 前端js通过a标签直接预览pdf文件,弹出下载页面问题
  • Hive课后练习题
  • Docker 初学者需要了解的几个知识点 (七):php.ini
  • ode with me是idea中用来干嘛的插件
  • MVS相机+YOLO检测方法
  • 【14】大恒相机SDK C#开发 ——Bitmap.UnlockBits()什么意思?有什么用?bmpData.Scan0;什么意思?有什么用?
  • 行业要闻|正式落地!新思科技宣布完成对Ansys的收购
  • 是德科技的BenchVue和纳米软件的ATECLOUD有哪些区别?
  • 1 机器学习概述 (第一天2025.7.31)
  • 【龙泽科技】汽车维护与底盘拆装检修仿真教学软件【风光580】
  • 非阿贝尔编织(Non-Abelian Braiding)
  • 量子测量的物理场景与理论
  • Union Application
  • 基于深度学习的医学图像分析:使用BERT实现医学文本分类
  • 从“救火”到“先知”:润建曲尺运维大模型如何重构网络运维价值链
  • Linux核心转储(Core Dump)原理、配置与调试实践