我是编程初学者。我想制作一个具有 3 个 View 的 Android 应用程序。
- TextView (显示文本),以及
- 按钮(前进和后退)。
我制作了一个要显示的单词数组一、二、三、四、五
。
我将 one
放在 xml
上。
当用户单击FORWARD
时,它会显示two
,当用户再次单击FORWARD
时,它会显示三
,当用户点击BACK
,它会显示two
。我可以做到这一点。
问题在于当它达到5
并且用户点击FORWARD
时以及当它达到one
并且用户点击BACK
它崩溃了。
我希望按钮不执行任何操作,甚至不返回one
。我希望用户知道这是列表的末尾。 BACK
按钮也有同样的问题。我希望它保留在 one
上。这是我的代码。请帮忙。
public class aba extends AppCompatActivity {
int i = 0;
String[] myList = {
"one",
"two",
"three",
"four",
"five"
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_aba);
}
//Incrementing the value by l on forwardButton click
public void forwardButton(View view) {
TextView textDisplay = (TextView) findViewById(R.id.textDisplay);
i = i + 1;
textDisplay.setText(myList[i]);
if (i == myList.length) {
i = i + 0;
}
}
//decrementing the value by l on backButton click
public void backButton(View view) {
TextView textDisplay = (TextView) findViewById(R.id.textDisplay);
i = i - 1;
textDisplay.setText(myList[i]);
if (i == 0) {
i = i - 0;
}
}
}
最佳答案
数组的索引从0开始。
由于数组包含 5 个元素,因此 length
的值为 5,但索引为 0、1、2、3、4。
这意味着您不想低于 0 且高于 4。
(此外,没有理由在每次单击按钮时初始化 TextView
)
这样的事情应该有效:
int i = 0;
String[] myList={"one", "two", "three", "four", "five"};
TextView textDisplay;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_aba);
textDisplay = (TextView) findViewById(R.id.textDisplay);
}
public void forwardButton(View view) {
if(i < myList.length - 1) {
i++;
textDisplay.setText(myList[i]);
}
}
public void backButton(View view) {
if(i > 0) {
i--;
textDisplay.setText(myList[i]);
}
}
关于java - 如何在数组末尾停止递增和递减?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38401942/