拆分字符串 Java Space
Split String Java Space
如果有人能帮助我,那就太好了。
我正在尝试使用 Java 的拆分命令,使用 space 拆分字符串,但问题是,字符串可能没有 space,这意味着它只是一个简单的命令(而不是 "enter 2",它将是 "exit")
Scanner SC = new Scanner(System.in);
String comando = SC.nextLine();
String[] comando2 = comando.split("\s+");
String first = comando2[0];
String second = comando2[1];
当我尝试这个时,如果我写 "enter 3" 它会工作,因为 "first = enter" 和 "second = 3",但是如果我写 "exit" 它会抛出一个错误,因为第二个不会'有一个价值。
我想拆分字符串,所以当我尝试执行以下操作时:
if ( comando.equalsIgnoreCase("exit"))
// something here
else if ( first.equalsIgnoreCase("enter"))
// and use String "second"
有人可以帮忙吗?谢谢!
在确定数组中的第二个元素存在之前,不要尝试访问它。示例:
if(comando2.length < 1) {
// the user typed only spaces
} else {
String first = comando2[0];
if(first.equalsIgnoreCase("exit")) { // or comando.equalsIgnoreCase("exit"), depending on whether the user is allowed to type things after "exit"
// something here
} else if(first.equalsIgnoreCase("enter")) {
if(comando2.length < 2) {
// they typed "enter" by itself; what do you want to do?
// (probably print an error message)
} else {
String second = comando2[1];
// do something here
}
}
}
请注意此代码如何始终在尝试访问 comando2
的元素之前检查 comando2.length
。你也应该这样做。
为什么不检查它是否有空格,如果有则进行不同的处理:
if (comando.contains(" "))
{
String[] comando2 = comando.split(" ");
String first = comando2[0];
String second = comando2[1];
}
else
{
String first = comando;
}
这个怎么样?
...
String[] comando2 = comando.split("\s+");
String first = comando2.length > 0 ? comando2[0] : null;
String second = comando2.length > 1 ? comando2[1] : null;
...
您的问题是您在知道数组元素是否存在之前访问它。这样,如果数组足够长,您将获得值;否则,您将获得 null。
如果 a
为真,则表达式 a ? b : c
的计算结果为 b
,如果 a
为假,则表达式的计算结果为 c
。这个? :
运算符叫做三元运算符。
如果有人能帮助我,那就太好了。
我正在尝试使用 Java 的拆分命令,使用 space 拆分字符串,但问题是,字符串可能没有 space,这意味着它只是一个简单的命令(而不是 "enter 2",它将是 "exit")
Scanner SC = new Scanner(System.in);
String comando = SC.nextLine();
String[] comando2 = comando.split("\s+");
String first = comando2[0];
String second = comando2[1];
当我尝试这个时,如果我写 "enter 3" 它会工作,因为 "first = enter" 和 "second = 3",但是如果我写 "exit" 它会抛出一个错误,因为第二个不会'有一个价值。 我想拆分字符串,所以当我尝试执行以下操作时:
if ( comando.equalsIgnoreCase("exit"))
// something here
else if ( first.equalsIgnoreCase("enter"))
// and use String "second"
有人可以帮忙吗?谢谢!
在确定数组中的第二个元素存在之前,不要尝试访问它。示例:
if(comando2.length < 1) {
// the user typed only spaces
} else {
String first = comando2[0];
if(first.equalsIgnoreCase("exit")) { // or comando.equalsIgnoreCase("exit"), depending on whether the user is allowed to type things after "exit"
// something here
} else if(first.equalsIgnoreCase("enter")) {
if(comando2.length < 2) {
// they typed "enter" by itself; what do you want to do?
// (probably print an error message)
} else {
String second = comando2[1];
// do something here
}
}
}
请注意此代码如何始终在尝试访问 comando2
的元素之前检查 comando2.length
。你也应该这样做。
为什么不检查它是否有空格,如果有则进行不同的处理:
if (comando.contains(" "))
{
String[] comando2 = comando.split(" ");
String first = comando2[0];
String second = comando2[1];
}
else
{
String first = comando;
}
这个怎么样?
...
String[] comando2 = comando.split("\s+");
String first = comando2.length > 0 ? comando2[0] : null;
String second = comando2.length > 1 ? comando2[1] : null;
...
您的问题是您在知道数组元素是否存在之前访问它。这样,如果数组足够长,您将获得值;否则,您将获得 null。
如果 a
为真,则表达式 a ? b : c
的计算结果为 b
,如果 a
为假,则表达式的计算结果为 c
。这个? :
运算符叫做三元运算符。