Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 逐字母循环遍历单词,输出与该字母/字符对应的数字_Java_String_Loops_Substring - Fatal编程技术网

Java 逐字母循环遍历单词,输出与该字母/字符对应的数字

Java 逐字母循环遍历单词,输出与该字母/字符对应的数字,java,string,loops,substring,Java,String,Loops,Substring,我正在尝试创建一个电话阅读器程序。如果用户要输入一个单词,程序将输出等效的电话号码。使用while、if和子字符串,我将如何处理这个问题 我尝试使用while、string replace和for Scanner keyboard = new Scanner (System.in); String phoneWord; int length, i ; phoneWord = keyboard.nextLine(); length = phoneWord.leng

我正在尝试创建一个电话阅读器程序。如果用户要输入一个单词,程序将输出等效的电话号码。使用while、if和子字符串,我将如何处理这个问题

我尝试使用while、string replace和for

   Scanner keyboard = new Scanner (System.in);

   String phoneWord;
   int length, i ;

   phoneWord = keyboard.nextLine();
   length = phoneWord.length();



   while (i < length) {
扫描仪键盘=新扫描仪(System.in);
字符串音素词;
int长度,i;
phoneWord=keyboard.nextLine();
length=phoneWord.length();
while(i
我希望输出等效的电话号码。
例如,如果单词中有A,它将在相应的位置输出1。

有几种方法可以将字母映射到数字。如果您想要简单的映射,
A:1,b:2,…,i:9,j:10,…,z:26
您可以执行以下操作,并利用事实字符映射到整数:

    StringBuilder sb= new StringBuilder();
    for (char letter : phoneWord.toLowerCase().toCharArray()) {
        sb.append((int) letter - 96);
    }
    System.out.println(sb.toString());
您可以使用
%10
添加一个模数,使数字保持在0和9之间,这将映射
a:1、b:2、…、i:9、j:0、…、z:6

    sb = new StringBuilder();
    for (char letter : phoneWord.toLowerCase().toCharArray()) {
        sb.append(((int) letter - 96) % 10);
    }
    System.out.println(sb.toString());
如果您想要自定义映射,例如手机映射,您可以创建如下映射:

    Map<Character, Integer> letterMap = new HashMap<>();
    letterMap.put('a', 1);
    letterMap.put('b', 1);
    letterMap.put('c', 1);
    letterMap.put('d', 2);
    // ...
    letterMap.put('z', 9);

    sb = new StringBuilder();
    for (char letter : phoneWord.toLowerCase().toCharArray()) {
        sb.append(letterMap.get(letter));
    }
    System.out.println(sb.toString());
Map lettmap=newhashmap();
字母地图。放置('a',1);
字母地图。放置('b',1);
字母地图。放置('c',1);
字母地图。放置('d',2);
// ...
字母地图。放置('z',9);
sb=新的StringBuilder();
for(字符字母:phoneWord.toLowerCase().toCharArray()){
某人附加(字母映射)得到(字母);
}
System.out.println(sb.toString());

我在字符串上使用
.toLowerCase()
来减少需要映射的字母数。如
(int)'A'=65
(int)'A'=97

这应该可以让你开始了。只要把数字放在它们对应的字母上,你就可以开始了

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

public class Main {

    public static void main(String args[]) throws Exception {

        Scanner keyboard = new Scanner(System.in);

        HashMap<Character, Integer> textToNum = new HashMap<Character, Integer>();

        ///Letters to their corresponding numbers here
        textToNum.put('a', 1);
        textToNum.put('b', 2);
        textToNum.put('c', 3);

        String phoneWord = keyboard.nextLine();
        String result = "";

        for(int i = 0; i < phoneWord.length(); i++) {
            result += textToNum.get(phoneWord.charAt(i));
        }

        System.out.println(result);
    }

}
import java.util.HashMap;
导入java.util.Scanner;
公共班机{
公共静态void main(字符串args[])引发异常{
扫描仪键盘=新扫描仪(System.in);
HashMap textToNum=新HashMap();
///这里的字母与相应的数字对应
textToNum.put('a',1);
textToNum.put('b',2);
textToNum.put('c',3);
字符串phoneWord=keyboard.nextLine();
字符串结果=”;
for(int i=0;i

希望这能有所帮助。

相关:我在谷歌上快速搜索了一下,有很多可能的例子,你可以试试。基本思路是,你需要设计出字符和相应数值之间的映射关系,字母如何映射到数字是
a->1,b->2,…,z->26
还是像手机键盘那样映射->9