如何比较两个字符串并计算它们?

时间:2018-08-01 17:44:52

标签: java android

我正在尝试基于getAdapterPosition()计算点击次数。并且它正常工作。代码下方

@Override
    public void onClick(View v) {

        // Do button click handling here
        if ( posisi2==getAdapterPosition() ) {
                clickcount--;
                tombolbaca.setText("Baca " + clickcount + "x");

                if (clickcount <= 0)
                {
                    mTitle.setVisibility(View.GONE);
                    rl2.setVisibility(View.GONE);
                }

        } // adapter

    } // onClick

但是当我尝试使用两个字符串的比较来计算点击次数时,出现了问题。结果是,计算机只能计数一次。您能帮我解决问题吗?问题出在这里:

public Button tombolbaca;
private int klik10 = 10;

@Override
    public void onClick(View v) {
         tombolbaca = (Button) v.findViewById(R.id.buttonbaca);
        // Problem here
        if( tombolbaca.getText().toString().equals("Baca 10x") ) {
            klik10--;
            tombolbaca.setText("Baca " + klik10 + "x");

            if (klik10 <= 0)
            {
                mTitle.setVisibility(View.GONE);
                rl2.setVisibility(View.GONE);
            }
        }


    } // onclick

2 个答案:

答案 0 :(得分:1)

好,现在知道了。

问题出在逻辑上:这是您的代码,由文本而不是代码编写

    if( tombolbaca.getText().toString().equals("Baca 10x"){ // this line says "if the text is exactly Baca 10x, go on"
        klik10--; // this line says: "make the value of klik10 = klik10 -1
        tombolbaca.setText("Baca " + klik10 + "x"); //this line says "set text of tombolbaca as the composition of the strings and the value of klik10

        if (klik10 <= 0) //if klik10 is equal or less than 0, do this
        {
            mTitle.setVisibility(View.GONE);
            rl2.setVisibility(View.GONE);
        }

所以,问题出在这里:

第一次迭代:

klik10 = 10
it enter the first if
klik10 will now be 9
text will be Baca 9x
not less than 1, so skip the if

第二次迭代

klik10 = 9 (because you set it before)
not going into if

所以,问题在于,只有文本是Baca 10x时,您才可以进入,但是在第一次迭代之后,它就不再是了。

解决方案可能是这样:

@Override
public void onClick(View v) {

        klik10--;
        tombolbaca.setText("Baca " + klik10 + "x");

        if (klik10 <= 0)
        {
            mTitle.setVisibility(View.GONE);
            rl2.setVisibility(View.GONE);
        }
}

如果写的话,则不需要if。您只需将其删除,代码即可使用。

如果没有,请告诉我为什么有if子句,我将修复上面的代码:)

PS:

如果要检查文本是否为正确的计数器,请在以下情况下执行以下操作:

if(tombolbaca.getText().String().equals("Baca " + klik10.toString() + "x"){
...

答案 1 :(得分:0)

第二次尝试时,比较将在"Baca 9x".equals("Baca 10x")与if语句不起作用

之间进行。

请尝试

if( !tombolbaca.getText().toString().equals("Baca 0x") ) { //using "Baca 0x"
    ...
}