高度转换 - 厘米到英尺和英寸(反之亦然)

时间:2016-09-10 06:40:20

标签: java android

我有一个编辑文本,用户可以用厘米以及英尺+英寸输入他的身高,例如。 5'11“。我有一个目标单位的切换按钮,所以我希望当用户选择厘米时,它应该将输入的文本从英尺+英寸转换为厘米,反之亦然。   现在,当我将高度转换为厘米时,它最后添加“\”“。​​我认为这是因为我已经放置了文本观察者,当计数达到3时,最后添加”\“。

public void onClick(View view) {
    switch (view.getId())
    {
        case R.id.btnCm:
            toggleHeightButton(R.id.btnCm,R.id.btnFeet,false);
            convertToCentimeter(enter_height);
            break;
        case R.id.btnFeet:
            toggleHeightButton(R.id.btnFeet,R.id.btnCm,true);
            enter_height.addTextChangedListener(new CustomTextWatcher(enter_height));
            break;
        case R.id.btnKg:
            toggleweightButton(R.id.btnKg,R.id.btnpound,false);
            break;
        case R.id.btnpound:
            toggleweightButton(R.id.btnpound,R.id.btnKg,true);
            break;
    }
}

public class CustomTextWatcher implements TextWatcher {
    private EditText mEditText;

    public CustomTextWatcher(EditText enter_height) {
        mEditText = enter_height;
    }

    public void beforeTextChanged(CharSequence s, int start, int count, int after) {
    }

    public void onTextChanged(CharSequence s, int start, int before, int count) {
    }

    public void afterTextChanged(Editable s) {
        int count = s.length();
        String str = s.toString();
        if (count == 1) {
            str = str + "'";
        } else if (count == 2) {
            return;
        } else if (count == 3) {
            str = str + "\"";
        } else if ((count > 4) && (str.charAt(str.length() - 1) != '\"') ){
            str = str.substring(0, str.length() - 2) + str.charAt(str.length() - 1) + "\"";
        } else {
            return;
        }

        mEditText.setText(str);
        mEditText.setSelection(mEditText.getText().length());
    }
}

3 个答案:

答案 0 :(得分:2)

有一个数学计算来管理厘米到英尺,反之亦然。

if let parsedData = try JSONSerialization.jsonObject(with: data!, options: .allowFragments) as? String { ...

答案 1 :(得分:1)

这可以通过正则表达式轻松完成,但我认为您应该首先尝试更简单的方法。

基本上,格式类似于e.。我们可以使用<packages> <package id="MySql.Data" version="6.9.9" targetFramework="net40-client" /> <package id="protobuf-net" version="2.0.0.668" targetFramework="net40-client" /> </packages> deliminator <activity android:name=".activity.KidModeActivity" android:clearTaskOnLaunch="true" android:launchMode="singleTask" android:stateNotNeeded="true"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.HOME" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </activity> 字符串。这样,数组的第一项是英尺数。

然后,我们剩下分割字符串的第二项:xx'xx"。为此,我们只需将其子串以删除最后一个字符,然后我们就可以得到英寸数!

尝试自己编写代码!

如果你真的陷入困境,那就是解决方案:

split

这是使用正则表达式的解决方案:

'

答案 2 :(得分:0)

这是我将厘米转换为英尺和英寸的实现 它考虑了这样一个事实,即在转换为英尺和英寸时四舍五入的值。

一英寸等于 2.54 厘米。如果将英寸四舍五入为整数值,则最大精度为 2.54 厘米。

binding.tickSeekBar.setLabelFormatter { centimeters
            val height = centimeters/2.54
            val inch  = height%12
            val feet = height/12
            "${feet.roundToInt()}ft ${inch.roundToLong()}in."
        }