为什么这个代码段在 JLabel 中只打印出 0?
Why does this code segment only print out 0 in the JLabel?
如何修复此代码段,使其打印我用逗号输入的数字?示例输入:1234,预期结果:1,2,3,4。
此代码在 Netbeans 上的普通文件中有效,但我无法更改它以适应 GUI。当我 运行 它只是在结果 JLabel
上显示零。我似乎可以找到任何可以帮助我解决这个问题的方法。
private void jButton1ActionPerformed(ActionEvent evt) {
Stack stack = new Stack();
int number = (int) (Integer.parseInt(jTextField1.getText()));
while (number > 0) {
stack.push(number % 10);
number = number / 10;
}
while (!stack.empty()) {
System.out.print(stack.pop());
if (!stack.empty()) {
System.out.print(",");
}
jLabel2.setText(String.valueOf(number));
}
}
您应该将结果存储在某个地方,以便稍后设置文本。
例如,您可以将字符存储在 StringBuilder
:
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
Stack stack = new Stack();
int number = (int) (Integer.parseInt(jTextField1.getText()));
while (number > 0) {
stack.push(number % 10);
number = number / 10;
}
StringBuilder sb = new StringBuilder();
while (!stack.empty()) {
sb.append(stack.pop());
if (!stack.empty()) {
sb.append(",");
}
}
jLabel2.setText(sb.toString());
}
问题是您在标签上打印 number
的值。那时数字总是等于 0
。
您想要的是打印堆栈中的值。
示例:
StringBuilder out = new StringBuilder();
while (!stack.empty())
{
out.append( stack.pop());
if (!stack.empty())
{
out.append(",");
}
}
jLabel2.setText(out.toString());
您将 jlabel 的文本设置为始终为零,因为此时 "number" 将始终为零。但是您将数字序列打印到控制台。您可能想将它们连接成一个字符串并相应地设置 jlabel 的文本。
您可以像这样使用 StringBuilder:
StringBuilder sb = new StringBuilder();
while (!stack.empty()) {
sb.append(stack.pop());
if (!stack.empty()) {
sb.append(", ");
}
jLabel2.setText(sb.toString())
}
如何修复此代码段,使其打印我用逗号输入的数字?示例输入:1234,预期结果:1,2,3,4。
此代码在 Netbeans 上的普通文件中有效,但我无法更改它以适应 GUI。当我 运行 它只是在结果 JLabel
上显示零。我似乎可以找到任何可以帮助我解决这个问题的方法。
private void jButton1ActionPerformed(ActionEvent evt) {
Stack stack = new Stack();
int number = (int) (Integer.parseInt(jTextField1.getText()));
while (number > 0) {
stack.push(number % 10);
number = number / 10;
}
while (!stack.empty()) {
System.out.print(stack.pop());
if (!stack.empty()) {
System.out.print(",");
}
jLabel2.setText(String.valueOf(number));
}
}
您应该将结果存储在某个地方,以便稍后设置文本。
例如,您可以将字符存储在 StringBuilder
:
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
Stack stack = new Stack();
int number = (int) (Integer.parseInt(jTextField1.getText()));
while (number > 0) {
stack.push(number % 10);
number = number / 10;
}
StringBuilder sb = new StringBuilder();
while (!stack.empty()) {
sb.append(stack.pop());
if (!stack.empty()) {
sb.append(",");
}
}
jLabel2.setText(sb.toString());
}
问题是您在标签上打印 number
的值。那时数字总是等于 0
。
您想要的是打印堆栈中的值。
示例:
StringBuilder out = new StringBuilder();
while (!stack.empty())
{
out.append( stack.pop());
if (!stack.empty())
{
out.append(",");
}
}
jLabel2.setText(out.toString());
您将 jlabel 的文本设置为始终为零,因为此时 "number" 将始终为零。但是您将数字序列打印到控制台。您可能想将它们连接成一个字符串并相应地设置 jlabel 的文本。 您可以像这样使用 StringBuilder:
StringBuilder sb = new StringBuilder();
while (!stack.empty()) {
sb.append(stack.pop());
if (!stack.empty()) {
sb.append(", ");
}
jLabel2.setText(sb.toString())
}