簡體   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