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

Java中如何根据输入标识实现数组指定位置字符串的赋值

问题解决:将字符串输入映射为数组下标完成赋值

需求梳理

接收输入的字符串标识(如"A"、"C"),对应预先定义的数组下标规则(A=0、B=1、C=2),将数组中A对应位置的元素赋值到C对应位置,最终输出数组第2位的内容(期望输出"value")。

原代码的问题

  1. 语法错误:
    • 导入Scanner类时首字母需大写:import java.util.Scanner;
    • Scanner实例化、变量定义需放在方法(如main)内部,static数组的声明位置需调整
    • Java中字符串类型为String(首字母大写),不是string
    • Scanner获取字符串的方法是next(),不是nextStr()
    • 语句结尾缺少分号:System.out.println(Example[2]);
  2. 逻辑缺陷:输入的是字符串"A""C",无法直接作为数组下标,需要建立字符串到数字下标的映射关系。

修正后的解决方案代码

这里用HashMap建立字符串到下标映射,写法灵活,便于后续扩展更多标识:

import java.util.HashMap;
import java.util.Scanner;

public class ArrayIndexMapping {
    // 预先定义目标数组
    public static String[] Example = {"value", "", ""};

    public static void main(String[] args) {
        // 建立字符串标识到数组下标的映射表
        HashMap<String, Integer> indexMap = new HashMap<>();
        indexMap.put("A", 0);
        indexMap.put("B", 1);
        indexMap.put("C", 2);

        Scanner sc = new Scanner(System.in);
        // 接收空格分隔的输入(如输入"A C")
        System.out.println("请输入两个标识,用空格分隔:");
        String first = sc.next();
        String second = sc.next();

        // 通过映射表获取对应的数组下标
        int fromIndex = indexMap.get(first);
        int toIndex = indexMap.get(second);

        // 执行赋值操作
        Example[toIndex] = Example[fromIndex];

        // 输出结果
        System.out.println(Example[2]);
        sc.close();
    }
}

若输入为逗号分隔格式(如"A,C"),可调整输入处理部分:

// 替换原输入接收代码
System.out.println("请输入两个标识,用逗号分隔:");
String input = sc.next();
String[] parts = input.split(",");
String first = parts[0].trim();
String second = parts[1].trim();

备选方案:switch-case转换

如果无需扩展更多标识,也可以用switch-case实现转换:

// 替换映射表和下标获取代码
int fromIndex = 0;
switch(first) {
    case "A": fromIndex = 0; break;
    case "B": fromIndex = 1; break;
    case "C": fromIndex = 2; break;
    default: throw new IllegalArgumentException("无效标识:" + first);
}

int toIndex = 0;
switch(second) {
    case "A": toIndex = 0; break;
    case "B": toIndex = 1; break;
    case "C": toIndex = 2; break;
    default: throw new IllegalArgumentException("无效标识:" + second);
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 09:20:26