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

Java如何扫描数组单索引内容并将值拆分赋值至独立数组

问题修正与实现方案

原代码存在的核心问题

  • 缺失java.util.Scanner的导入声明,运行会直接报错
  • 循环逻辑嵌套错误,while读行循环和数组索引遍历的for循环顺序搞反,会出现行读取越界问题
  • 赋值逻辑写反,注释中的splitLines[0] = aPrize[i]是把空数组的值赋给拆分结果,和需求完全相反
  • 多余的无效判断if(fileLine.split(DELIM) != splitLines),每次调用split方法都会生成新的数组对象,这个判断永远为true,没有实际意义
  • 初始化时提前调用了一次nextLine(),会直接丢掉第一行奖品数据

修正后的可运行代码

import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner; // 新增缺失的Scanner导入

public class DrewCarey {
    public static void main(String[] args) throws FileNotFoundException {
        int min = 0;
        int max = 52;
        int randomIndex = (int)Math.floor(Math.random()*(max-min+1)+min);
        String[] aPrize = new String[53];
        int[] aPrice = new int[53];
        final String DELIM = "\t";
        Scanner fileScanner = new Scanner(new File("PrizeFile.txt"));
        int index = 0; // 记录当前行对应的数组索引

        // 逐行读取文件,只要还有行且索引没超过数组长度就继续
        while(fileScanner.hasNextLine() && index < aPrize.length) {
            String fileLine = fileScanner.nextLine();
            String[] splitLines = fileLine.split(DELIM);
            // 拆分后按索引赋值到对应数组
            aPrize[index] = splitLines[0];
            aPrice[index] = Integer.parseInt(splitLines[1]);
            index++;
        }
        fileScanner.close();

        // 测试:输出随机抽取的奖品信息
        System.out.println("随机抽到的奖品:" + aPrize[randomIndex]);
        System.out.println("对应价格:" + aPrice[randomIndex]);
    }
}

逻辑说明

  • 不需要用Scanner读取数组内部内容,字符串调用split方法拆分后返回的splitLines数组,splitLines[0]就是当前行的奖品名称,splitLines[1]就是当前行的价格字符串,直接调用Integer.parseInt()转成int类型即可赋值给价格数组。
  • 单独维护index变量作为数组下标,每读完一行索引加1,避免循环嵌套导致的逻辑混乱。
  • 赋值完成后你预先定义的randomIndex就可以直接使用,通过aPrize[randomIndex]和aPrice[randomIndex]就能拿到随机选中的奖品信息。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 20:57:00