有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java我怎样才能让它更好

好的,这里我有一个switch case语句,它正在失败并尝试每一个选项。基本上我想要的东西是,如果用户在文本框中输入字母A,背景将变为b!如果他们不输入字母A,那么我希望它停止执行代码。但是现在发生的事情是,如果用户输入例如字母Q,当背景是字母A时,背景将变为字母R,而不是告诉用户他们错了。基本上,我想知道,如果用户没有输入他们的字母,我如何阻止背景的改变。这里是代码

     public void afterTextChanged(Editable s) {
                char ch = words.getText().toString().charAt(0);

                switch(ch - 'A') {

                case 0: 
                    //A;

                    gestureViewer.setBackgroundResource(R.drawable.lettersb);

                    break;
                case 1:
                    gestureViewer.setBackgroundResource(R.drawable.lettersc);
                    break;
                case 2:
                    gestureViewer.setBackgroundResource(R.drawable.lettersd);

                    break;
                case 3:
                    gestureViewer.setBackgroundResource(R.drawable.letterse);

                    break;
                case 4:
                    gestureViewer.setBackgroundResource(R.drawable.lettersf);
                    break;
                case 5:
                    gestureViewer.setBackgroundResource(R.drawable.lettersg);
                break;
                case 6:
                    gestureViewer.setBackgroundResource(R.drawable.lettersh);
                    break;
                case 7:
                    gestureViewer.setBackgroundResource(R.drawable.lettersi);
                    break;
                case 8:
                    gestureViewer.setBackgroundResource(R.drawable.lettersj);
                    break;
                case 9:
                    gestureViewer.setBackgroundResource(R.drawable.lettersk);
                    break;
                case 10:
                    gestureViewer.setBackgroundResource(R.drawable.lettersl);
                    break;
                case 11:
                    gestureViewer.setBackgroundResource(R.drawable.lettersm);
                    break;
                case 12:
                    gestureViewer.setBackgroundResource(R.drawable.lettersn);
                    break;
                case 13:
                    gestureViewer.setBackgroundResource(R.drawable.letterso);
                    break;
                case 14:
                    gestureViewer.setBackgroundResource(R.drawable.lettersp);
                    break;
                case 15:
                    gestureViewer.setBackgroundResource(R.drawable.lettersq);
                    break;
                case 16:
                    gestureViewer.setBackgroundResource(R.drawable.lettersr);
                    break;
                case 17:
                    gestureViewer.setBackgroundResource(R.drawable.letterss);
                    break;
                case 19:
                    gestureViewer.setBackgroundResource(R.drawable.letterst);
                    break;
                case 20:
                    gestureViewer.setBackgroundResource(R.drawable.lettersu);
                    break;
                case 21:
                    gestureViewer.setBackgroundResource(R.drawable.lettersv);
                    break;
                case 22:
                    gestureViewer.setBackgroundResource(R.drawable.lettersw);
                    break;
                case 23:
                    gestureViewer.setBackgroundResource(R.drawable.lettersx);
                    break;
                case 24:
                    gestureViewer.setBackgroundResource(R.drawable.lettersy);
                break;
                case 25:
                    gestureViewer.setBackgroundResource(R.drawable.lettersz);
                    break;

如果我把图片排成一个阵列,然后从那里开始,会更好吗?我试着把If switch case包括在内,但根本没用


共 (2) 个答案

  1. # 1 楼答案

    试试看:

     public void afterTextChanged(Editable s) {
          char ch = words.getText().toString().charAt(0);
          int id = getResources().getIdentifier("letters" + ch, "drawable",  context.getPackageName())
          gestureViewer.setBackgroundResource(id);
     }
    

    }

  2. # 2 楼答案

    我会预先填充一个数组并调用:

    gestureViewer.setBackgroundResource(myArray[ch - 'A']);
    

    它将使你的代码更具可读性

    你也可以用Map<Character,MyImage>来实现这一点——它可能会让你在将来更容易地添加更多功能。
    如果这样做,调用将使用

    gestureViewer.setBackgroundResource(myMap.get(ch));
    

    请注意,数组/映射只需在应用程序的运行时填充一次