将文本转换为整数,递增并重新转换为文本,有更简单的方法吗? 我正在做一个Android测试,即使是C++的一些经验,我也是java初学者。
我在文本区域中打印了一个变量,它统计收到的推送通知的数量。我成功地找到了一种在接收事件中启动代码的方法,并希望增加它 我找到的方法(不起作用)是获取textArea的内容,将其转换为整数,递增,转换为字符串,然后转换为char[],然后发送回文本区域 类活动:将文本转换为整数,递增并重新转换为文本,有更简单的方法吗? 我正在做一个Android测试,即使是C++的一些经验,我也是java初学者。,java,android,Java,Android,我在文本区域中打印了一个变量,它统计收到的推送通知的数量。我成功地找到了一种在接收事件中启动代码的方法,并希望增加它 我找到的方法(不起作用)是获取textArea的内容,将其转换为整数,递增,转换为字符串,然后转换为char[],然后发送回文本区域 类活动: public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
ParseAnalytics.trackAppOpened(getIntent());
TextView textView = (TextView) findViewById(R.id.textView1);
char [] test = Integer.toString(Integer.parseInt(textView.getText().toString()) + 1).toCharArray();
System.out.println(test);
textView.setText(test, 0, 10);
}
类解析应用程序:
@Override
public void onCreate() {
super.onCreate();
// Add your initialization code here
Parse.initialize(this, Parse_ID, Parse_ID_2);
PushService.setDefaultPushCallback(this, ParseStarterProjectActivity.class);
ParseInstallation.getCurrentInstallation().saveInBackground();
ParseUser.enableAutomaticUser();
ParseACL defaultACL = new ParseACL();
// If you would like all objects to be private by default, remove this line.
defaultACL.setPublicReadAccess(true);
ParseACL.setDefaultACL(defaultACL, true);
}
因此,应用程序崩溃,logCat告诉我(如果我注释掉setText,测试仍然具有良好的价值):
如果我理解你的处境,你想要这样的东西吗
public static void main(String[] args) throws IOException {
int i = Integer.parseInt("100");
i++;
String v = String.valueOf(i);
System.out.println("v = " + v);
}
输出为
v = 101
textView.setText(测试,0,10)代码>
因为您的char[]测试的长度不为10,所以导致IndexOutOfBoundsException。
因此,在尝试将其设置为TextView之前,请检查char[]test的长度
大概
if(test.length >= 10)
{
textView.setText(test, 0, 10);
}else
{
textView.setText(test, 0, test.length);
}
将该数字存储在类变量中,并在TextView
private int count = 0;
//when needed update count
count++;
//show value in TextView
private void showValue() {
textView.setText(String.valueOf(count));
}
您的代码应该如下所示:
int value;
try {
value = Integer.valueOf(test);
value++;
} catch (NumberFormatException e) {
value = 1;
}
首先,当您得到文本时,最好输入本地字符串
ParseAnalytics.trackAppOpened(getIntent());
TextView textView = (TextView) findViewById(R.id.textView1);
String test = textView.getText().toString();
第二,当你想要一个int值时,为了你的安全,最好用try-and-catch来包围它。
获取如下值:
int value;
try {
value = Integer.valueOf(test);
value++;
} catch (NumberFormatException e) {
value = 1;
}
第三,按如下方式设置新编号和日志:
System.out.println("Current value: "+value);
textView.setText(String.valueOf(test));
希望有帮助。为什么不使用setText(String.valueOf(Integer.parseInt(textView.getText().toString())+1))
?@Zouzou:因为setText(String)不存在。setText(CharSequence s)
存在,而字符串是CharSequence
,那么到char[]
为什么?你不需要那个。@zouzu:你说得对,我只是忘了把setText链接到textViewtextView.setText(test,0,test.length)
是不够的,我不明白它应该是我应该给出的char[]的大小。@DrakaSAN-我刚才提到了,因为你的问题包含值10。因为我认为你必须用它的长度10。如果没有必要,那么您可以跳过该部分。根据您的评论,如果您不关心字符[]测试的长度
,则无需将字符串转换为字符[],只需直接使用int
和append操作符“
。