java笔试题,编写一个小程序

题目:九个数字对应的九个英文,输入这串英文字母,输出对应的数字。

备注:有哪位大ge给个完整的代码学习一下嘛,谢谢

可以用map,key 放英文,value 放对应数字。
你输入相对应的英文,就相当于从map中的key。
再用key去取对应的数字

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

public class Demo {
    public static void main(String[] args) {
        Map<String, Integer> map = new HashMap<>();
        Scanner input = new Scanner(System.in);
        String str = input.nextLine();
        map.put("A", 0);
        map.put("B", 1);
        map.put("C", 2);
        map.put("D", 3);
        map.put("E", 4);
        map.put("F", 5);
        map.put("G", 6);
        map.put("H", 7);
        map.put("I", 8);
        map.put("J", 9);
        for (int i = 0; i < str.length(); ++i) {
            System.out.println(map.get(str.charAt(i) + ""));
        }
        input.close();
    }
}

img

我之前是这么写的,每次只能输入一个对应的

有点意思,学校还会考双指针。

String[] items = new String[]{"one","two","three","four","five","six","seven","eight","nine"};
        Map<String,Integer> map = new HashMap<>();
        for(int i = 0; i < 9; i++){
            map.put(items[i],i+1);
        }

        System.out.println("请输入1-9的数字英文单词:");
        Scanner sc = new Scanner(System.in);
        String name = sc.nextLine();
        int left = 0;
        StringBuilder sb = new StringBuilder();
        //观察到长度都是3-5,那就从长度为3开始检查
        for(int right = left+2; right <= name.length(); right++){
            if(map.containsKey(name.substring(left,right+1))){
                sb.append(map.get(name.substring(left,right+1)));
                //找到就移动边界,左边界移动到当前单词的后面
                //右边界也和左边界要间隔2个,考虑到下次循环会加一个,这里只加一个
                left = right+1;
                right = left+1;
            }
        }

        System.out.println(sb.toString());