如何获取 java 中用户输入给出的字符串的第一个字符
How can I obtain the first character of a string that is given by a user input in java
我希望用户输入一个字符串,比如说他或她的名字。该名称可以是 Jessica 或 Steve。我想让程序识别字符串但只输出前三个字母。它真的可以是我决定要输出的任意数量的字母(在本例中为 3),是的,我已经尝试过
charAt();
但是,我不想在程序中硬编码一个字符串,我想要一个用户输入。所以它给我一个错误。下面的代码是我的。
public static void main(String args[]){
Scanner Name = new Scanner(System.in);
System.out.print("Insert Name here ");
System.out.print(Name.nextLine());
System.out.println();
for(int i=0; i<=2; i++){
System.out.println(Name.next(i));
}
}
错误发生在
System.out.println(Name.next(i));
它强调了 .next
区域,它给了我一个错误,指出,
“类型 Scanner 中的方法 next(String) 不适用于参数 (int)”
现在我知道我的输出应该是一个字符串类型,对于每次迭代它应该是一个 int,这样 0 是字符串的第一个索引 1 应该是第二个索引,2 应该是第三个索引,但它是一个创建字符串的字符,我很困惑。
System.out.println("Enter string");
Scanner name = new Scanner(System.in);
String str= name.next();
System.out.println("Enter number of chars to be displayed");
Scanner chars = new Scanner(System.in);
int a = chars.nextInt();
System.out.println(str.substring(0, Math.min(str.length(), a)));
当您从用户那里获取条目时,验证输入以确保它符合您的代码规则,以免引发异常(错误)始终是个好主意。如果发现用户的输入无效,则为用户提供输入正确响应的机会,例如:
Scanner userInput = new Scanner(System.in);
String name = "";
// Prompt loop....
while (name.isEmpty()) {
System.out.print("Please enter Name here: --> ");
/* Get the name entry from User and trim the entry
of any possible leading or triling whitespaces. */
name = userInput.nextLine().trim();
/* Validate Entry...
If the entry is blank, just one or more whitespaces,
or is less than 3 characters in length then inform
the User of an invalid entry an to try again. */
if (name.isEmpty() || name.length() < 3) {
System.out.println("Invalid Entry (" + name + ")!\n"
+ "Name must be at least 3 characters in length!\n"
+ "Try Again...\n");
name = "";
}
}
/* If we get to this point then the entry meets our
validation rules. Now we get the first three
characters from the input name and display it. */
String shortName = name.substring(0, 3);
System.out.println();
System.out.println("Name supplied: --> " + name);
System.out.println("Short Name: --> " + shortName);
正如您在上面的代码中看到的,String#substring() 方法用于获取用户输入的字符串(名称)的前三个字符。
char
类型自 Java 2 以来基本上已被破坏,自 Java 5 以来一直是遗留的。作为 16 位值,char
在物理上不能代表最多的字符。
而是使用代码点整数来处理单个字符。
调用 String#codePoints
获取每个字符的代码点 IntStream
。
通过调用 limit
截断流,同时传递所需的字符数。
通过传递对 StringBuilder
class.
上找到的方法的引用,使用生成的文本构建一个新的 String
int limit = 3 ; // How many characters to pull from each name.
String output =
"Jessica"
.codePoints()
.limit( limit )
.collect(
StringBuilder::new,
StringBuilder::appendCodePoint,
StringBuilder::append
)
.toString()
;
Jes
我希望用户输入一个字符串,比如说他或她的名字。该名称可以是 Jessica 或 Steve。我想让程序识别字符串但只输出前三个字母。它真的可以是我决定要输出的任意数量的字母(在本例中为 3),是的,我已经尝试过
charAt();
但是,我不想在程序中硬编码一个字符串,我想要一个用户输入。所以它给我一个错误。下面的代码是我的。
public static void main(String args[]){
Scanner Name = new Scanner(System.in);
System.out.print("Insert Name here ");
System.out.print(Name.nextLine());
System.out.println();
for(int i=0; i<=2; i++){
System.out.println(Name.next(i));
}
}
错误发生在
System.out.println(Name.next(i));
它强调了 .next
区域,它给了我一个错误,指出,
“类型 Scanner 中的方法 next(String) 不适用于参数 (int)”
现在我知道我的输出应该是一个字符串类型,对于每次迭代它应该是一个 int,这样 0 是字符串的第一个索引 1 应该是第二个索引,2 应该是第三个索引,但它是一个创建字符串的字符,我很困惑。
System.out.println("Enter string");
Scanner name = new Scanner(System.in);
String str= name.next();
System.out.println("Enter number of chars to be displayed");
Scanner chars = new Scanner(System.in);
int a = chars.nextInt();
System.out.println(str.substring(0, Math.min(str.length(), a)));
当您从用户那里获取条目时,验证输入以确保它符合您的代码规则,以免引发异常(错误)始终是个好主意。如果发现用户的输入无效,则为用户提供输入正确响应的机会,例如:
Scanner userInput = new Scanner(System.in);
String name = "";
// Prompt loop....
while (name.isEmpty()) {
System.out.print("Please enter Name here: --> ");
/* Get the name entry from User and trim the entry
of any possible leading or triling whitespaces. */
name = userInput.nextLine().trim();
/* Validate Entry...
If the entry is blank, just one or more whitespaces,
or is less than 3 characters in length then inform
the User of an invalid entry an to try again. */
if (name.isEmpty() || name.length() < 3) {
System.out.println("Invalid Entry (" + name + ")!\n"
+ "Name must be at least 3 characters in length!\n"
+ "Try Again...\n");
name = "";
}
}
/* If we get to this point then the entry meets our
validation rules. Now we get the first three
characters from the input name and display it. */
String shortName = name.substring(0, 3);
System.out.println();
System.out.println("Name supplied: --> " + name);
System.out.println("Short Name: --> " + shortName);
正如您在上面的代码中看到的,String#substring() 方法用于获取用户输入的字符串(名称)的前三个字符。
char
类型自 Java 2 以来基本上已被破坏,自 Java 5 以来一直是遗留的。作为 16 位值,char
在物理上不能代表最多的字符。
而是使用代码点整数来处理单个字符。
调用 String#codePoints
获取每个字符的代码点 IntStream
。
通过调用 limit
截断流,同时传递所需的字符数。
通过传递对 StringBuilder
class.
String
int limit = 3 ; // How many characters to pull from each name.
String output =
"Jessica"
.codePoints()
.limit( limit )
.collect(
StringBuilder::new,
StringBuilder::appendCodePoint,
StringBuilder::append
)
.toString()
;
Jes