繁体   English   中英

如何制作一个退格按钮来删除一个for循环中stringbuilder的最后一个字符

[英]how to make a backspace button that removes the last character of a stringbuilder inside a for loop

我正在制作一个Android应用程序,它通过蓝牙接收从arduino到android的不同电压电平,并将其转换为字母。 我的应用程序已经可以将其转换为字母,现在的问题是我不知道如何删除字符串构建器中位于for循环内的最后一个字母。.我有一个名为Backspace的按钮,并且希望它与相同的功能一起使用就像在计算机的退格键中一样,按此键将删除最后一个字母。.我希望有人可以帮助我,对此仍然很新。

注意:这些代码来自主要活动; sbletter是一个附加字母的字符串缓冲区

boolean test = false;
char[] charArray = sbletter.toString().toCharArray();
char currentletter =' ';
char prevletter =' '; 

StringBuilder strBuild1 = new StringBuilder();

    for(int i = 0; i < charArray.length; i++) {
        currentletter = charArray[i];
            if(curletter != prevletter) {
                strBuild1.append(charArray[i]);
                    if(test){
                       strBuild1.deleteCharAt(strBuild1.length()-1); 
                    }
                test = false;
            }
                prevletter = currentletter;
        }

SecondActivity.textView1.setText(strBuild1.toString());

SecondActivity.backspace.setOnClickListener(new View.OnClickListener() {

            public void onClick(View view) {

                test = true;

            }

        });

这可以肯定地工作:

private void Zero1ActionPerformed(java.awt.event.ActionEvent evt) {                                      

    if (OutputTextField.getText().length()>0){
        StringBuffer sb = new StringBuffer(OutputTextField.getText());
        sb = sb.deleteCharAt(OutputTextField.getText().length()-1);
        OutputTextField.setText(sb.toString());
    }
}     

退格键的onClickListener中的onClick方法是事件驱动的,即,当单击退格键时,将调用onClick方法。 因此,将test设置为true并不重要,因为那时候for循环已经停止执行了,因为它位于外部。

您可以直接使用sbletter删除其最后一个字符,如下所示:

backspace.setOnClickListener(new View.OnClickListener() {

  public void onClick(View view) {

    sbletter = sbletter.deleteCharAt(sbletter.length - 1);

    // Now the last character from sbletter is deleted.
    // Use sbletter for whatever purpose you like now.
  }
}

请注意,StringBuilder和StringBuffer的deleteCharAt方法分别返回StringBuilder和StringBuffer对象,它们带有更改后的值,这就是我这样写的原因:

sbletter = sbletter.deleteCharAt(sbletter.length - 1); // Will work as expected.

而不仅仅是:

sbletter.deleteCharAt(sbletter.length - 1); // Won't work as expected.

希望能有所帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM