字符串不能处理空格?
String can´t handle spaces?
所以我在 Java 中做了一些练习,我遇到了一个字符串问题,它似乎不能很好地处理空格。
当我输入名称时,例如 "Joe Smith","Smith" 部分将在变量程序中结束。如果我在变量程序中写 "Economics major" 整个程序就会崩溃。 (可能是因为 points 是一个 int 变量)
似乎空格导致它崩溃或以奇怪的方式运行。在这种情况下空格应该如何工作?
import java.util.Scanner;
class Student {
String name;
String program;
int points;
Scanner userScan = new Scanner(System.in);
String setName() {
System.out.printf("Please enter name: ");
String scan = userScan.next();
name = scan;
return name;
}
String setProgram() {
System.out.printf("Please enter program: ");
String scan = userScan.next();
program = scan;
return program;
}
int setPoints() {
System.out.printf("Please enter points: ");
int scan = userScan.nextInt();
points = scan;
return points;
}
void printStudent() {
System.out.printf("Name: " + name + "\nProgram:" + program + "\nPoints" + points);
}
}
public class Kap_2_Ovning_2Student {
public static void main(String[] args) {
Student student1 = new Student();
Student student2 = new Student();
student1.setName();
student1.setProgram();
student1.setPoints();
student1.printStudent();
您正在使用 new Scanner(System.in)
,它默认使用空格作为标记分隔符。每次调用 Scanner.next()
时,它只会读取数据,直到遇到定界符。来自 Scanner.next()
method javadoc:
Finds and returns the next complete token from this scanner. A complete token is preceded and followed by input that matches the delimiter pattern. This method may block while waiting for input to scan, even if a previous invocation of hasNext() returned true.
如果你想在你的标记中允许空格,你必须更改分隔符,例如在换行符上拆分使用:
new Scanner(input).useDelimiter("\n*");
这是 Scanner
class 的 JavaDoc,请您检查一下,以便大致了解它是如何工作的。
我认为这里的主要问题是你想通过调用 next()
方法来读取整行,而不是它你可以使用 nextLine()
方法,例如。
所以我在 Java 中做了一些练习,我遇到了一个字符串问题,它似乎不能很好地处理空格。
当我输入名称时,例如 "Joe Smith","Smith" 部分将在变量程序中结束。如果我在变量程序中写 "Economics major" 整个程序就会崩溃。 (可能是因为 points 是一个 int 变量)
似乎空格导致它崩溃或以奇怪的方式运行。在这种情况下空格应该如何工作?
import java.util.Scanner;
class Student {
String name;
String program;
int points;
Scanner userScan = new Scanner(System.in);
String setName() {
System.out.printf("Please enter name: ");
String scan = userScan.next();
name = scan;
return name;
}
String setProgram() {
System.out.printf("Please enter program: ");
String scan = userScan.next();
program = scan;
return program;
}
int setPoints() {
System.out.printf("Please enter points: ");
int scan = userScan.nextInt();
points = scan;
return points;
}
void printStudent() {
System.out.printf("Name: " + name + "\nProgram:" + program + "\nPoints" + points);
}
}
public class Kap_2_Ovning_2Student {
public static void main(String[] args) {
Student student1 = new Student();
Student student2 = new Student();
student1.setName();
student1.setProgram();
student1.setPoints();
student1.printStudent();
您正在使用 new Scanner(System.in)
,它默认使用空格作为标记分隔符。每次调用 Scanner.next()
时,它只会读取数据,直到遇到定界符。来自 Scanner.next()
method javadoc:
Finds and returns the next complete token from this scanner. A complete token is preceded and followed by input that matches the delimiter pattern. This method may block while waiting for input to scan, even if a previous invocation of hasNext() returned true.
如果你想在你的标记中允许空格,你必须更改分隔符,例如在换行符上拆分使用:
new Scanner(input).useDelimiter("\n*");
这是 Scanner
class 的 JavaDoc,请您检查一下,以便大致了解它是如何工作的。
我认为这里的主要问题是你想通过调用 next()
方法来读取整行,而不是它你可以使用 nextLine()
方法,例如。