如何在Android中将4位数字转换为一位数字

如何在Android中将4位数字转换为一位数字,android,Android,我有一个编辑文本,在编辑文本中我用来输入一个4位数,我已经将一些键和值对设置为0-9位数 因此,我的问题是,当我在编辑文本中输入一个4位数(任意位数)时,它应该被转换成一个单位数,这样keyvalue中的消息就会出现 这是我的代码: public class MainActivity extends Activity { String Sequence; Button buttonok; String UserEntreredNumber; HashMa

我有一个编辑文本,在编辑文本中我用来输入一个4位数,我已经将一些键和值对设置为0-9位数

因此,我的问题是,当我在编辑文本中输入一个4位数(任意位数)时,它应该被转换成一个单位数,这样
keyvalue
中的消息就会出现

这是我的代码:

public class MainActivity extends Activity {

     String Sequence;
     Button buttonok;
     String UserEntreredNumber;
     HashMap<String,String> messagesMap = new HashMap<String,String>();
     String magicMessage;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        final EditText Sequence = (EditText)this.findViewById(R.id.Sequence);    

        Sequence.setError("Input must be 4 digits");



        final AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder.setPositiveButton(" ok ",  new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int id) {

                dialog.cancel();
          }
        });

        //create hash map

       populateList(); 

        //populate hash map with 0 to 9 key and values


        buttonok=(Button)this.findViewById(R.id.buttonok);
        buttonok.setOnClickListener(new OnClickListener() {
            public void onClick(View v) {
                UserEntreredNumber = Sequence.getText().toString();
                magicMessage = messagesMap.get(UserEntreredNumber);

                builder.setMessage( magicMessage);
                builder.show();         
        }
    });     

}
    private void populateList() { 

       messagesMap.put("0", "Congratulations!!!, you have been selected."); 
       messagesMap.put("1", "Wow! your program just ran without errors!"); 
       messagesMap.put("2", "It's very hot in office"); 
       messagesMap.put("3", "Wow, what a building? It's awesome");
       messagesMap.put("4", "You got a calll");
       messagesMap.put("5", "There were no errors");
       messagesMap.put("6", "U have been shortlisted for the next round");
       messagesMap.put("7", "nice costume");
       messagesMap.put("8", "do u have any idea!");
       messagesMap.put("9", "Today is a bad day");    
    }   
}
公共类MainActivity扩展活动{
字符串序列;
按钮按钮;
字符串userEnteredNumber;
HashMap messagesMap=新的HashMap();
字符串magicMessage;
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
最终EditText序列=(EditText)this.findViewById(R.id.Sequence);
Sequence.setError(“输入必须是4位数字”);
final AlertDialog.Builder=新建AlertDialog.Builder(此);
setPositiveButton(“确定”,新的DialogInterface.OnClickListener(){
public void onClick(DialogInterface对话框,int-id){
dialog.cancel();
}
});
//创建哈希映射
大众主义者();
//使用0到9个键和值填充哈希映射
buttonok=(Button)this.findViewById(R.id.buttonok);
setOnClickListener(新的OnClickListener(){
公共void onClick(视图v){
UserEnteredNumber=Sequence.getText().toString();
magicMessage=messagesMap.get(userentrednumber);
builder.setMessage(magicMessage);
builder.show();
}
});     
}
私有void populateList(){
messagesMap.put(“0”,“恭喜!!!,您已被选中。”);
messagesMap.put(“1”,“哇!你的程序刚刚运行没有错误!”);
messagesMap.put(“2”,“办公室里很热”);
messagesMap.put(“3”,“哇,多棒的建筑啊,太棒了”);
messagesMap.put(“4”,“你接到电话”);
messagesMap.put(“5”,“没有错误”);
messages map.put(“6”,“U已被列入下一轮的候选名单”);
messagesMap.put(“7”,“漂亮的服装”);
留言板(“8”,“你有什么想法吗!”);
messagesMap.put(“9”,“今天是糟糕的一天”);
}   
}

也许这会帮助您:

Integer digit; 
try{
   digit = Integer.valueOf(Sequence.getText().toString());
} catch (NumberFormatException e){
   digit = null;
}
if (digit != null && digit >= 0 && digit <= 9999 && Pattern.matches("^[0-9]{4,4}$", Sequence.getText().toString());){
     //some logic
} else {
   Sequence.setError("Input must be 4 digits");
}  
整数位;
试一试{
digit=Integer.valueOf(Sequence.getText().toString());
}捕获(数字格式){
数字=空;
}
如果(数字!=null&&digit>=0&&digit您说:

4位数字应转换为一位数字

如果这是您想要的,则取4位数字除以10的剩余部分,即运算结果:

您的4位数字%10

它将返回一个介于0到9之间的数字:实际上是4位数字的最后一位


假设您的4位数字在变量digit4中:

Integer digit4 = Integer.valueOf(Sequence.getText().toString());
然后,您可以通过以下方式获得变量digit1中0到9之间的一位数字(实际上是4位数字的最后一位):

                int digit1 = digit4 % 10;

您尚未指定4位数字和一位数字之间的关系,因此,如果您想要一个介于0到9之间的随机数,而不考虑输入,则可以使用以下方法获得它:

Random r= new Random();
int digit1 = r.nextInt(10);

你能解释清楚吗?当我输入4个数字(任意数字)时会感到困惑在edittext中,它应该被转换为一位数字。您希望输入值始终在1000和9999之间吗?这些都是四位数字。如果是这样,您可以检查字符串是否确实有4个字符长,尝试将其转换为整数,如果它转换,请检查大小。@Ewald您可以为我提供一些代码…question尚不清楚。请解释您到底需要什么。例如,请给出一些输入和输出的示例,以及您迄今为止所尝试的内容(似乎@Evos胜过了我:)如果您不限制用户输入0-9个字符以外的任何字符,则您可能需要注意异常。但是,我在方法valueOf(String)中遇到了一个错误在类型中,整数不适用于参数(可编辑)。对不起,我的错误,我已修复了代码,请再次检查。但4位数字应转换为一位数字,因为我已为0-9个数字编写了键值对(因为我无法将键值对写入1000和9999之间的所有数字)@请再检查一遍。