我尝试获取一个文本框来显示数组,但据我尝试,它只显示数组的最后一个数字
例如:数组给出:1, 24, 18, 98, 100, 78, 63, 24, 77, 46
文本框显示:46
输出显示:
1
24
18
98
100
78
63
24
77
46
我想知道是否有办法让我的文本框显示整个数组?
这是我的代码:
private void btnStartProgramActionPerformed(java.awt.event.ActionEvent evt) {
int [] numbers = new int [10];
//declares an array that stores 10 integers
for (int i=0; i<=9; i=i+1)
/* as long as i is less than or equal to 9 increase i by one and carry out the operations in the curly brackets */
{
numbers[i] = 1 + (int)(Math.random() * ((100 - 1) + 1));
// makes a random integer that is <= 1 but >=100
lblArray.setText(String.valueOf(numbers[i]));
// prints only the last number in the array (lblArray is a jLabel)
System.out.println(numbers[i]);
// prints all 10 numbers in the array
}
}
我尝试使用其他文本容器,例如文本字段和文本区域,但没有成功。我也尝试过用谷歌搜索我的问题,但我要么不理解他们的解决方案,要么不起作用。我是初学者,所以如果我犯了任何大错误,我会虚心接受建议。
setText()
设置标签的值。它不会附加到当前内容,而是完全替换它。如果要保留标签以前的内容,则必须获取它(通过 getText()
或标签提供的其他访问器方法),将其与数组的当前元素连接起来,并将其用作新文本标签的。
问题是,每次循环时,您都将标签的文本 (lblArray) 设置为当前数字,因此仅显示数组中的最后一个数字。要显示整个数组,您可以将所有值累积到一个字符串中,然后在循环结束后设置标签文本。
仅举一个例子
private void btnStartProgramActionPerformed(java.awt.event.ActionEvent evt) {
int[] numbers = new int[10]; integers
StringBuilder allNumbers = new StringBuilder();
for (int i = 0; i < numbers.length; i++) {
numbers[i] = 1 + (int) (Math.random() * 100);
allNumbers.append(numbers[i]).append(", ");
System.out.println(numbers[i]);
}
// Remove the last comma and space for a cleaner look
if (allNumbers.length() > 0) {
allNumbers.setLength(allNumbers.length() - 2);
}
lblArray.setText(allNumbers.toString()); // Display the entire array in the label
}