Java-Android如何将字符串中的字母转换为指定的数字

时间:2015-04-03 03:42:06

标签: java android string int

关于程序的详细说明:该程序采用输入字符串(字母,单词等)并将所有字母转换为为每个字母字符分配的数值,然后将结果存储在数组中。 / p>

字母字符的数字分配示例如下所示:

1 = A I J Q Y
2 = B K R
3 = C G L S
4 = D M T
5 = E H N X
6 = U V W
7 = O Z
8 = F P

这是我使用Java for Android的代码示例:

public class NameCon extends ActionBarActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.nameconvert);

        Button btn = (Button) findViewById(R.id.btnConvert);
        Button clear = (Button) findViewById(R.id.btnClearName);
        final EditText et1 = (EditText) findViewById(R.id.edittxtName);
        final TextView result = (TextView) findViewById(R.id.txtViewSum);

        result.setText("Input Character Only");
        btn.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                Map<Character, Integer> map;
                String str = new String(et1.getText().toString());
                str = str.replaceAll("","");   
                char[]crt = str.trim().toCharArray();  
                int[] intArray = new int[crt.length]; 

                map = new HashMap<>(26);
                map.put('a', 1);
                map.put('i', 1);
                map.put('j', 1);
                map.put('q', 1);
                map.put('y', 1);
                map.put('b', 2);
                map.put('k', 2);
                map.put('r', 2);
                map.put('c', 3);
                map.put('g', 3);
                map.put('l', 3);
                map.put('s', 3);
                map.put('d', 4);
                map.put('m', 4);
                map.put('t', 4);
                map.put('e', 5);
                map.put('h', 5);
                map.put('n', 5);
                map.put('x', 5);
                map.put('u', 6);
                map.put('v', 6);
                map.put('w', 6);
                map.put('o', 7);
                map.put('z', 6);
                map.put('f', 8);
                map.put('p', 8);

                for(int i = 0; i < crt.length; i ++){
                    intArray[i] = map.get(crt[i]);
                    result.setText("Values is "+ intArray[i]);
                }
            }
        });
    }
}

我现在的问题是我无法得到如下所示的示例结果。然后程序将字母转换为数字。然后将每个字母相加。

这是我要展示的:     键盘输入名称=&gt;蒂姆卡希尔     输出显示在textview = 25

非常感谢帮助我。

2 个答案:

答案 0 :(得分:1)

这应该有效:

public class NameCon extends ActionBarActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.nameconvert);

    Button btn = (Button) findViewById(R.id.btnConvert);
    Button clear = (Button) findViewById(R.id.btnClearName);
    final EditText et1 = (EditText) findViewById(R.id.edittxtName);
    final TextView result = (TextView) findViewById(R.id.txtViewSum);
    Map<Character, Integer> map = new HashMap<>(26);
    map.put('a', 1);
    map.put('i', 1);
    map.put('j', 1);
    map.put('q', 1);
    map.put('y', 1);
    map.put('b', 2);
    map.put('k', 2);
    map.put('r', 2);
    map.put('c', 3);
    map.put('g', 3);
    map.put('l', 3);
    map.put('s', 3);
    map.put('d', 4);
    map.put('m', 4);
    map.put('t', 4);
    map.put('e', 5);
    map.put('h', 5);
    map.put('n', 5);
    map.put('x', 5);
    map.put('u', 6);
    map.put('v', 6);
    map.put('w', 6);
    map.put('o', 7);
    map.put('z', 6);
    map.put('f', 8);
    map.put('p', 8);

    result.setText("Input Character Only");
    btn.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            String str = et1.getText().toString();
            char[]crt = str.trim().toCharArray();  
            int sum = 0;

            for(int i = 0; i < crt.length; i ++){
                sum += map.get(crt[i]);
            }
            result.setText("Values is "+ sum);
        }
    });}}

希望它有所帮助!

答案 1 :(得分:0)

字段声明

private EditText editTextUserInput = null;
private Button buttonGetTotalNumber = null;
private HashMap<String, Integer> map = new HashMap<String, Integer>();
private char[] charArray = null;
private ArrayList<Integer> charNumberList = null;

的onCreate()

map.put("a", 1);
    map.put("i", 1);
    map.put("j", 1);
    map.put("q", 1);
    map.put("y", 1);
    map.put("b", 2);
    map.put("k", 2);
    map.put("r", 2);
    map.put("c", 3);
    map.put("g", 3);
    map.put("l", 3);
    map.put("s", 3);
    map.put("d", 4);
    map.put("m", 4);
    map.put("t", 4);
    map.put("e", 5);
    map.put("h", 5);
    map.put("n", 5);
    map.put("x", 5);
    map.put("u", 6);
    map.put("v", 6);
    map.put("w", 6);
    map.put("o", 7);
    map.put("z", 6);
    map.put("f", 8);
    map.put("p", 8);

    editTextUserInput = (EditText)findViewById(R.id.editTextUserInput);
    buttonGetTotalNumber = (Button)findViewById(R.id.buttonConvertToNumber);

    buttonGetTotalNumber.setOnClickListener(new OnClickListener()
    {

        @Override
        public void onClick(View v)
        {
            // TODO Auto-generated method stub
            if(editTextUserInput.length()>0)
            {
                charNumberList = new ArrayList<Integer>();
                charArray = editTextUserInput.getText().toString().trim().toCharArray();

                for(int i=0; i < charArray.length;i++)
                {
                    Iterator<Map.Entry<String, Integer>> iterator = map.entrySet().iterator();
                    while(iterator.hasNext())
                    {
                        Map.Entry<String, Integer> dataEntry = iterator.next();

                        String charData = ""+charArray[i];
                        if(charData.equalsIgnoreCase(dataEntry.getKey()))
                        {
                            charNumberList.add(dataEntry.getValue());
                        }
                    }
                }
            }

            Toast.makeText(getApplicationContext(), ""+getTotalOfInput(charNumberList), Toast.LENGTH_LONG).show();
        }
    });

获取输入总数的方法

public int getTotalOfInput(ArrayList<Integer> resultNumberList)
{
    int total=0;
    for(int i=0; i < resultNumberList.size(); i++)
    {
        int number = resultNumberList.get(i);
        total = total + number;
    }
    return total;
}