Java新手求助:程序在CMD运行无响应,无法获取用户输入
你的Java代码问题分析与修复方案
嘿,我来帮你拆解这段代码里的问题,顺便给你调整成符合预期的版本!
首先先澄清你说的“运行后毫无反应”——其实程序正在默默等待你输入整数呢!inputa.nextInt()这个方法会暂停程序执行,直到你在CMD里输入一个整数并按下回车,它才会继续走后面的逻辑。不过你的代码里还有几个关键错误,导致逻辑完全不符合你的预期,我给你逐个说明:
1. if语句后的多余分号是致命bug
看这行代码:
if(b<20);
这里的分号;相当于给if语句加了一个“空执行体”,意思是当b<20成立时,什么都不做。后面的int a=5;和打印代码块{...}完全和这个if条件无关,不管b的值是多少,都会执行这部分内容。
2. 代码块逻辑混乱
你应该是想在b<20的时候给a赋值5并打印结果吧?那正确的写法是把赋值和打印逻辑都放进if的代码块里,同时删掉if后面多余的分号。另外,最好加个输入提示,不然很容易误以为程序没反应。
修复后的完整代码
import java.util.Scanner; class Vedant { public static void main(String[] args) { Scanner inputa = new Scanner(System.in); // 增加输入提示,让用户明确知道要做什么 System.out.print("请输入一个整数:"); int b = inputa.nextInt(); if (b < 20) { int a = 5; System.out.println("Answer = " + a); } // 可以补充else分支,处理b>=20的情况,让程序逻辑更完整 else { System.out.println("输入的数不小于20,没有对应结果"); } inputa.close(); // 用完Scanner记得关闭,养成良好编码习惯 } }
修复后的运行流程
- 运行程序后,CMD会显示
请输入一个整数:,明确提示你输入内容 - 输入一个整数(比如15)并按下回车,程序会打印
Answer = 5 - 如果输入25这类大于等于20的数,程序会打印
输入的数不小于20,没有对应结果
这样修改后,程序不仅能正常和你交互,逻辑也完全符合你原本的需求啦!
内容的提问来源于stack exchange,提问作者Vedant
相关产品推荐
相关产品推荐

