Java 方法调用在提取后不工作

Java 方法调用在提取后不工作,java,methods,validation,Java,Methods,Validation,我一直在尝试创建一个输入验证方法,然后调用它来优化我的android代码,但它不起作用。我试过调试,但什么都没有。 这是我第一次做的,而且很有效: String s1 =startTime1.getText().toString(); if(TextUtils.isEmpty(startTime1.getText())){ s1 = "00:00"; } String e1 = endTime1.getText().toString(); if(TextUtils.isEmpty(end

我一直在尝试创建一个输入验证方法,然后调用它来优化我的android代码,但它不起作用。我试过调试,但什么都没有。 这是我第一次做的,而且很有效:

String s1 =startTime1.getText().toString();
if(TextUtils.isEmpty(startTime1.getText())){
    s1 = "00:00";
}
String e1 = endTime1.getText().toString();
if(TextUtils.isEmpty(endTime1.getText())){
    e1 = "00:00";
}
但是在将验证提取到这个方法中并在用户每次输入输入时调用它之后,似乎什么都不起作用

public void emptyInputValidation(EditText time, String timeToString){
    if(TextUtils.isEmpty(time.getText())){
        timeToString = "00:00";
    }           
}


compute.setOnClickListener(new View.OnClickListener(){
            public void onClick(View v){

                try{
                    String s1 =startTime1.getText().toString();
                    emptyInputValidation(startTime1, s1);
                    String e1 = endTime1.getText().toString();
                    emptyInputValidation(endTime1, e1);
                    }
            catch (ParseException e){
                    e.printStackTrace();

                }     
}
提前感谢。

准时到字符串=00:00;您正在将函数的参数重新指定为00:00,这不会反映在方法之外。以下是更正后的代码:

public String emptyInputValidation(EditText time) {
    if(TextUtils.isEmpty(time.getText())){
        return "00:00";
    } else {
        return time.getText().toString();
    }           
}

然后只需调用字符串s1=emptyInputValidationstartTime1

这是Java中对象引用和参数传递工作中令人讨厌的部分之一。设置timeToString=00:00;在我们的emptyInputValidation方法中,验证方法并不反映在该方法之外。Java通过值传递引用,这有点令人困惑。这意味着,您调用字符串来更改它的任何方法都将反映在方法的范围之外,但是,赋值将不会

解决此问题的最简单方法是让它返回字符串:


您使用emptyInputValidation方法测试什么?非常感谢!由于您的解释,我现在了解了如何有效地从方法或函数返回值。我能解决这个问题!感谢您在调用该方法时提供的简短任务,它帮助优化了我的代码!
public String emptyInputValidation(EditText time)
{
    if(TextUtils.isEmpty(time.getText()) {
        return "00:00";
    }
    return time.getText();
}