StringBuilder 不打印它的值?
StringBuilder not printing its value?
我是 java 的菜鸟,所以如果这是一个简单的问题,我很抱歉。
我一直觉得有趣的是,您可以通过将一个数字的数字相加来将一个数字压缩成一个数字。因此,我决定尝试制作一个程序来为我做这件事!这是一个例子。
Input: 557
5 + 5 + 7 = 17
1 + 7 = 8
Answer: 8
看!这显然适用于任何数字。但是,我的程序在没有输出的情况下终止。谁能帮我吗?我不太习惯 tringBuilder,所以我认为这可能是问题所在。
import java.util.Scanner;
import java.lang.StringBuilder;
public class MagicNumberApp
{
public static void main (String [] args)
{
int number;
String numberstring;
boolean keepGoing = false;
Scanner input = new Scanner(System.in);
StringBuilder builder = new StringBuilder();
sopl("Welcome to Magic Number! \nThe idea is to add the idividual digits of a number "
+ "\nuntil it is condensed into a one digit number.\n\nInput a number...");
sop(">");
number = input.nextInt();
numberstring = Integer.toString(number);
if (numberstring.length() < 1)
keepGoing = true;
sopl("");
number = 0;
while (keepGoing)
{
for (int i = 0; i < numberstring.length(); i++)
{
number += Character.getNumericValue(numberstring.charAt(i));
builder.append("+" + numberstring.charAt(i) + " ");
}
builder.append("=" + number);
sopl(builder);
if (numberstring.length() > 1)
{
numberstring = Integer.toString(number);
number = 0;
sopl("");
}
else
{
keepGoing = false;
}
}
}
public static void sop (Object o)
{
System.out.print(o);
}
public static void sopl (Object o)
{
System.out.println(o);
}
}
我认为问题在于这一行:
if (numberstring.length() < 1)
keepGoing = true;
现在它说 keepGoing
只有在 numberstring
的长度为 0 时才为真。您可以将其更改为这样的内容:
if (numberstring.length() > 1)
keepGoing = true;
编辑: 我还有一个建议。如果用户输入只有一个数字,您可以添加 else
语句来打印消息:
else
sopl(number + " only has one digit. Try again!");
你的keepGoing
逻辑是倒退的。您将 keepGoing
设置为 true
是输入的数字小于 1 位并且您将其初始化为 false
.
if (numberstring.length() < 1)
keepGoing = false;
所有数字都至少有一个数字,即使是0
,所以在while
循环之前不需要进行上述测试。去掉它。但是你必须将keepGoing
初始化为true
。
除了所有的答案。我建议您将输入读取为 String 并保存自己对字符串的初始转换。
numberstring = input.nextLine();
我是 java 的菜鸟,所以如果这是一个简单的问题,我很抱歉。
我一直觉得有趣的是,您可以通过将一个数字的数字相加来将一个数字压缩成一个数字。因此,我决定尝试制作一个程序来为我做这件事!这是一个例子。
Input: 557
5 + 5 + 7 = 17
1 + 7 = 8
Answer: 8
看!这显然适用于任何数字。但是,我的程序在没有输出的情况下终止。谁能帮我吗?我不太习惯 tringBuilder,所以我认为这可能是问题所在。
import java.util.Scanner;
import java.lang.StringBuilder;
public class MagicNumberApp
{
public static void main (String [] args)
{
int number;
String numberstring;
boolean keepGoing = false;
Scanner input = new Scanner(System.in);
StringBuilder builder = new StringBuilder();
sopl("Welcome to Magic Number! \nThe idea is to add the idividual digits of a number "
+ "\nuntil it is condensed into a one digit number.\n\nInput a number...");
sop(">");
number = input.nextInt();
numberstring = Integer.toString(number);
if (numberstring.length() < 1)
keepGoing = true;
sopl("");
number = 0;
while (keepGoing)
{
for (int i = 0; i < numberstring.length(); i++)
{
number += Character.getNumericValue(numberstring.charAt(i));
builder.append("+" + numberstring.charAt(i) + " ");
}
builder.append("=" + number);
sopl(builder);
if (numberstring.length() > 1)
{
numberstring = Integer.toString(number);
number = 0;
sopl("");
}
else
{
keepGoing = false;
}
}
}
public static void sop (Object o)
{
System.out.print(o);
}
public static void sopl (Object o)
{
System.out.println(o);
}
}
我认为问题在于这一行:
if (numberstring.length() < 1)
keepGoing = true;
现在它说 keepGoing
只有在 numberstring
的长度为 0 时才为真。您可以将其更改为这样的内容:
if (numberstring.length() > 1)
keepGoing = true;
编辑: 我还有一个建议。如果用户输入只有一个数字,您可以添加 else
语句来打印消息:
else
sopl(number + " only has one digit. Try again!");
你的keepGoing
逻辑是倒退的。您将 keepGoing
设置为 true
是输入的数字小于 1 位并且您将其初始化为 false
.
if (numberstring.length() < 1)
keepGoing = false;
所有数字都至少有一个数字,即使是0
,所以在while
循环之前不需要进行上述测试。去掉它。但是你必须将keepGoing
初始化为true
。
除了所有的答案。我建议您将输入读取为 String 并保存自己对字符串的初始转换。
numberstring = input.nextLine();