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

Java程序整数读取问题:现有代码无法编译,如何实现整数输入?

嘿,我来帮你搞定这个整数读取的问题!你的代码里有几个关键问题导致编译失败,咱们一步步来修复:

问题分析

  1. 类名冲突:你自己定义了一个Scanner类,和你导入的java.util.Scanner重名了。Java会优先使用你自定义的这个类,而不是标准库的Scanner,这就导致new Scanner(System.in)根本没法正确调用标准库的构造方法,直接编译报错。
  2. 代码位置错误:你在自定义的Scanner类里直接写了Scanner in = new Scanner(System.in);和int num = in.nextInt();这些执行语句——Java不允许把执行代码直接放在类的成员区域,必须放在方法、构造器或者初始化块里。
  3. 缺少实际读取逻辑:你的main方法里只定义了变量,没有真正执行读取整数的代码。

修正后的完整代码

我给你两种方案,一种是保留自定义类的写法,另一种是更简洁的直接在main方法里读取:

方案1:使用自定义类封装读取逻辑

import java.util.Scanner;

// 把自定义类改名,彻底避免和标准库Scanner冲突
class NumberReader {
    // 把读取逻辑封装到方法里,符合Java语法规范
    public int readInteger() {
        Scanner inputScanner = new Scanner(System.in);
        System.out.print("请输入一个整数:");
        return inputScanner.nextInt();
    }
}

public class Main {
    public static void main(String[] args) {
        // 控制台不解析HTML,直接输出文本即可
        System.out.println("-- Binaere Suche --");
        
        // 方式一:直接用标准库Scanner读取
        Scanner mainScanner = new Scanner(System.in);
        System.out.print("请输入目标整数:");
        int zahl = mainScanner.nextInt();
        System.out.println("你输入的整数是:" + zahl);
        
        // 方式二:用自定义的NumberReader类读取
        NumberReader reader = new NumberReader();
        int anotherNumber = reader.readInteger();
        System.out.println("你输入的另一个整数是:" + anotherNumber);
        
        // 关闭Scanner,避免资源泄漏
        mainScanner.close();
    }
}

方案2:简化版(直接在main方法读取)

如果不需要自定义类,直接在main里完成读取更简单:

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        System.out.println("-- Binaere Suche --");
        
        Scanner scanner = new Scanner(System.in);
        System.out.print("请输入要用于二分查找的整数:");
        int zahl = scanner.nextInt();
        
        // 这里可以添加你的二分查找业务逻辑
        System.out.println("你输入的目标整数是:" + zahl);
        
        scanner.close();
    }
}

关键修正点说明

  • 改掉自定义类的名字,彻底解决类名冲突问题,让导入的java.util.Scanner能正常工作。
  • 把读取代码放到方法里,符合Java的语法规则(类成员区域只能放变量声明、方法定义等,不能直接放执行语句)。
  • 移除了控制台里的HTML标签,因为控制台不会解析HTML,直接输出纯文本更合适。
  • 添加了关闭Scanner的代码,虽然JVM会自动回收资源,但手动关闭是良好的编程习惯。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:47:26