(我不能使用数组或更先进的东西。我可以使用子字符串和循环,这几乎就是这样。(我有一个程序,该程序不断要求用户输入名称。我如何一次又一次地输入不同的名称,然后打印出所有由逗号分隔的不同名称。如何将多个输入存储到一个变量中?当用户输入HI时,他们输入的所有名称都应被逗号分开,并且循环应该退出。我可以让LOP退出,但并非他们输入的所有名称要打印出来。
public class Hi {
public static void main(String[]args){
Scanner s = new Scanner(System.in);
String Names;
String x = "hi";
while (true) {
System.out.print("Please enter a name: ");
Names=s.nextLine();
int len = Names.length();
if (Names.compareTo(x) == 0) {
break;
}
}
}
}
您可以使用StringBuilder
累积它们:
final String QUIT_FLAG = "hi";
String currName = null;
StringBuilder names = new StringBuilder();
Scanner sc = new Scanner(System.in);
while (true) {
System.out.print("Please enter a name: ");
currName = sc.nextLine();
if (QUIT_FLAG.equals(currName)) {
break;
}
if (names.length() > 0) {
names.append(',');
}
names.append(currName);
}
System.out.println(names);
您已经使用过
Names = s.nextLine();
在您的while
循环中。该=
操作员清除了Names
变量,然后分配给给定的最后一个值。因此,按顺序保留先前的值,请使用+=
操作员。
所以尝试使用
Names += ", " + s.nextLine();
我建议您使用equals()
代替compareTo()
。更改您的main
方法。
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
String Names = null;
while (true) {
System.out.print("Please enter a name: ");
String name = s.nextLine();
if (name.toLowerCase().equals("hi")) {
break;
}
if (Names == null) {
Names = name;
} else {
Names += ", " + name;
}
}
System.out.println("Names : " + Names);
}