当前位置: 首页 > 知识库问答 >
问题:

添加值并插入setText

井通
2023-03-14

你好,我正在创建一个游戏,它有分数,我需要使点被添加和更改setText.

我在转换时遇到了问题,因为我在字符串中获取文本值,对其求和会产生错误。

    TextView pvoce = (TextView) findViewById(R.id.pvoce);
        TextView papp = (TextView) findViewById(R.id.papp);

if (escolhaApp == "pedra" && escolhaUsuario == "tesoura" || escolhaApp == "papel" && escolhaUsuario == "pedra" || escolhaApp == "tesoura" && escolhaUsuario == "papel") {
            textoResultado.setText("    You Lose   ");
            String soma = 1;
            int totalapp = (soma + papp);
            String totalappString = Integer.toString(totalapp);
            papp.setText(totalappString);

        } else if (escolhaUsuario == "pedra" && escolhaApp == "tesoura" || escolhaUsuario == "papel" && escolhaApp == "pedra" || escolhaUsuario == "tesoura" && escolhaApp == "papel") {
            textoResultado.setText("   You Win   ");
            int soma = 1;
            int totalvoce = soma + pvoce;
            String totalvoceString = Integer.toString(totalvoce);
            pvoce.setText(totalvoceString);
        }

错误:不兼容的类型:int无法转换为String错误:不兼容的类型:String无法转换为int错误:二进制运算符的坏操作数类型'第一种类型:int第二种类型:TextView

共有3个答案

南宫炜
2023-03-14

嗯,您必须稍微修改一下java基础知识

        String soma = 1; // you have a problem here call it Problem 1 
        int totalapp = (soma + papp); //  because of Problem 1 you get part of  Problem 2  and because of  papp is a view object, not a value you get the second part  so you have to get it's valued first by getText() Method 



        String totalappString = Integer.toString(totalapp); // and Problem 3 here 
        papp.setText(totalappString);

问题一是分配问题字符串应介于“”

              String soma ="1"; 
or you can consider soma as int from the beginning.It depends on how you are solving the problem, let us just take care of the syntax errors and semantics are upon your logic.

问题二是转换问题,因为papp是一个包含String类型的视图,值应该由getText()获取,然后转换为整数,然后用于求和

              int totalapp = (Integer.parseInt(soma) + 
              Integer.parseInt(papp.getText()));//note papp.getText() 
景嘉实
2023-03-14

我不会对错误有太多的强调,因为它已经在前面的答案中涵盖了。但是在这里,您可以通过注释出您的代码行来找到正确的解决方案,这些代码行对问题的一些解释有问题,并在每行的正下方写下更正后的代码

TextView pvoce = (TextView) findViewById(R.id.pvoce);
TextView papp = (TextView) findViewById(R.id.papp);

if (escolhaApp == "pedra" && escolhaUsuario == "tesoura" || escolhaApp == "papel" && escolhaUsuario == "pedra" || escolhaApp == "tesoura" && escolhaUsuario == "papel") {
            textoResultado.setText("    You Lose   ");
            // String soma = 1; // wrong as java is statically typed language, you can't assign a int into a String 
            int soma = 1;

           //  int totalapp = (soma + papp); // papp is of TextView type, you need to get its text by getText(), convert it to String by .toString(), and then into int to make the integer addition valid
            int totalapp = soma + Integer.parseInt(papp.getText().toString());

            String totalappString = Integer.toString(totalapp);
            papp.setText(totalappString);

        } else if (escolhaUsuario == "pedra" && escolhaApp == "tesoura" || escolhaUsuario == "papel" && escolhaApp == "pedra" || escolhaUsuario == "tesoura" && escolhaApp == "papel") {
            textoResultado.setText("   You Win   ");
            int soma = 1;
           //  int totalvoce = soma + pvoce; // pvoce is of TextView type, you need to get its text by getText(), convert it to String by .toString(), and then into int to make the integer addition valid
            int totalvoce = soma + Integer.parseInt(pvoce.getText().toString());

            String totalvoceString = Integer.toString(totalvoce);
            pvoce.setText(totalvoceString);
        }
陈俊誉
2023-03-14

Java是一种静态类型语言,这意味着您不能将值分配给不兼容的类型(String soma=1;不是有效的分配)。此外,papp是TextView的一个实例,而不是int,因此不能执行int totalapp=(soma papp)

在将TextView文本添加到任何其他值之前,您必须将其强制到int,例如:

TextView papp = (TextView) findViewById(R.id.papp);

int soma = 1;
int pappInt = 0;
try {
    pappInt = Integer.parseInt(papp.getText().toString());
} catch (NumberFormatException nfe) {
    // Cannot parse papp.getText() as an Integer
}

int totalapp = (soma + pappInt);
 类似资料:
  • 问题内容: 我有这张桌子: 我想插入一个新字段,例如 order ,对于每个引用,我将设置一个新月值。因此输出应为: 我可以用一个简单的查询做到这一点吗? 编辑 上面的例子只是一个例子。这是我在数据库上的真实表: 问题答案: MySQL不支持分析(IE:ROW_NUMBER),这是您要使用的输出结果。使用: 通常,这将需要单独的语句来声明@rownum和@ref变量,但是如果像在示例中所看到的那样

  • 问题内容: 请考虑下表: 我将以这种方式向其插入条目。 如何知道为它创造了什么价值?仅使用该字段执行SELECT是无效的,因为可能会有重复的条目。 问题答案: 通过普通的SQL: 有关详细信息,请参见手册:http : //db.apache.org/derby/docs/10.7/ref/rrefidentityvallocal.html 从Java类(通过JDBC)执行此操作时,可以在通过适当

  • 我有一个名为student的表,它有以下列名和数据 有没有办法添加列mark1,mark2和mark3,并插入总共添加的值,你们可以建议我关于这个.iam使用sqlplus数据库

  • 问题内容: 有几种将数据插入表中的方法: 有没有办法使用,但我不想在colA中插入例如colAA值,而是总是将其插入1。 感谢帮助 问题答案: 只需在列表中添加一个常量

  • 问题内容: 我有个问题。有三个表:T1,T2,T_target。T1和T2表具有许多不同的列,但我只需要两者中的ID列。T_target表具有一个ID列,当然还有另一个:project_No。 T1和T2中也出现了一些ID,但是我不想在它们之间创建重复项,如果一个ID同时出现在两个表中,则只需将其插入到T_target中一次,但是如果它已经在T_target中,则允许行动两次。另一个条件是,每个新

  • 我必须使用tbody的第一行创建thead。我不能完全控制标记,所以我使用jQuery来实现这一点。 我已经成功地使用了一些借用的脚本,但当我将多个表添加到页面时,第一行似乎在下面的表中重复 我可以想象我需要以父表为目标,通常我会给每个表一个ID,但我不能,因为这些都是为我生成的。 在这把小提琴上可以看到正在发生的事情的一个例子http://jsfiddle.net/FGH6B/ 我当前的jque