题目:九个数字对应的九个英文,输入这串英文字母,输出对应的数字。
备注:有哪位大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();
}
}
我之前是这么写的,每次只能输入一个对应的
有点意思,学校还会考双指针。
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());