gpt4 book ai didi

java - 如何通过 EditText 获取用户输入并对其进行处理

转载 作者:行者123 更新时间:2023-11-29 08:09:23 25 4
gpt4 key购买 nike

我搜索了该站点并发现了类似的问题,并且我实现了这些解决方案,但无济于事。我想做的是:我只是想获得一点 Android 编程经验,所以我尝试制作一个 hex/dec/bin/oct 计算器。

我有一个用于十进制、十六进制、二进制和八进制的 EditText。他们每个人旁边都有一个“转换自”按钮。所以如果你点击按钮从八进制转换,它会输出相应的转换到其他的 EditText 字段。

这是我尝试使用 Lucifer 建议的 from decimal 函数的代码的改进版本,但仍然没有解决问题:

public void dec(View view) {
final EditText decimal = (EditText) findViewById(R.id.editDec);
final EditText hex = (EditText) findViewById(R.id.editHex);
final EditText bin = (EditText) findViewById(R.id.editBin);
final EditText oct = (EditText) findViewById(R.id.editOct);
String deci = decimal.getText().toString();
hex.setText(String.valueOf(Integer.parseInt(deci,16)));
bin.setText(String.valueOf(Integer.parseInt(deci,2)));
oct.setText(String.valueOf(Integer.parseInt(deci,8)));
}

我得到的当前错误

02-08 00:04:32.143: E/AndroidRuntime(409): Caused by: java.lang.NumberFormatException: Invalid int: "54"

“54”是我尝试在十进制 EditText 中输入的数字。

我认为它是说它找不到具有文本输入 ID 的资源,但我并没有尝试将文本作为 ID 获取,我希望它作为文本。

我假设我搞砸了一些简单的事情,但我没有想到。

这是它试图从中获取的 EditText 之一

<EditText
android:id="@+id/editHex"
android:layout_width="100dp"
android:layout_height="wrap_content"
android:layout_weight="11.38"
android:textColor="#000000"
android:background="@android:drawable/editbox_background"
android:inputType="text" >
</EditText>

十进制、二进制和八进制输入使用“数字”的输入类型

最佳答案

你的代码不正确,您正在尝试将整数值转换为十六进制、二进制和八进制数,但是,

Integer.parseInt(deci,16)  Integer.parseInt(deci,2)  Integer.parseInt(deci,8)

用于将 deci 变量转换为 Hexa,Binary 和 Ocatal,这意味着您错误地执行了反向操作。

检查我更新的代码,这是你想要的输出。

public void dec(View view) 
{
try
{
EditText decimal = (EditText) findViewById(R.id.editDec);
EditText hex = (EditText) findViewById(R.id.editHex);
EditText bin = (EditText) findViewById(R.id.editBin);
EditText oct = (EditText) findViewById(R.id.editOct);
int deci = Integer.parseInt(decimal.getText().toString().trim());

System.out.println ( "Original " + deci );
System.out.println ( "Hexa : " + Integer.toHexString(deci) );
System.out.println ( "Deci :" + Integer.toBinaryString(deci));
System.out.println ( "Oct : " + Integer.toOctalString(deci) );

hex.setText(String.valueOf(Integer.toHexString(deci)));
bin.setText(String.valueOf(Integer.toBinaryString(deci)));
oct.setText(String.valueOf(Integer.toOctalString(deci)));
}
catch ( Exception e )
{
System.out.println ( "Exception : " + e.toString() );
}
}

当您将 Text 设置为 EditText 时,请确保您在其中传递的是 String 格式。

关于java - 如何通过 EditText 获取用户输入并对其进行处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9187989/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com