我正在寻找一种方法来检查用户输入的String是否包含两件事: 首先:它应该以" hello"(它的hello和whitspace!)或者以数字开头。如果两者都是假的,我想打印出假,如果其中一个是真的我打印出真。
if (text.startsWith("hello ") == false)
{
if (Character.isDigit(text.CharAt(0)) == false)
{
System.out.println("false");
}
Syso("true");
}
Syso("true");
我知道在这种情况下,两个If不是最明智的选择,但我很好。我现在唯一的问题是,如果文字是"你好"所以没有空格,它仍然给我真实。是否必须对方法startsWith做些什么?有另一种方法可以使用吗?
抱歉,我的英语很糟糕,我对编程很了解。但是感谢feedbak
答案 0 :(得分:1)
如果其中一个条件成立,您希望某些事情成立。因此,这是一个逻辑or
:
System.out.println(text.startsWith("hello ") || Character.isDigit(text.charAt(0)));
答案 1 :(得分:0)
if (! text.startsWith ("hello ") && ! Character.isDigit (text.charAt (0)) {
Syso ("false");
}
else Syso ("true");
这可以进一步缩小。如果(!a&&!b)等同于if(!(a || b))。
if (! (text.startsWith ("hello ") || Character.isDigit (text.charAt (0)))) {
Syso ("false");
}
else Syso ("true");
然而,否定这种情况令人困惑。因此,如果没有充分的理由,你应该制定一个积极的,因此更简单的条件:
if (text.startsWith ("hello ") || Character.isDigit (text.charAt (0)))
Syso ("true");
else Syso ("false");
我无法使用空白重现您的错误 - 也许您因过多的否定而欺骗自己?
请注意,您应该测试示例代码以重现错误 - 并剪切并粘贴它,以防止出现新错误。 String.charAt(0)必须以方法名称中较低的c开头。
请注意,在结束括号后需要“其他”才能达到目标。
答案 2 :(得分:0)
在代码中包含print语句的方式是错误的。您的代码中的问题是,如果它不以'hello'开头,则它进入if块。如果它不是以数字开头,则进一步进入内部if,打印为false。一旦它出来,它打印为true,然后在外面,如果它再次打印为真。
if (str.startsWith("hello ") || Character.isDigit(str.charAt(0))) {
System.out.println("True");
}
else{
System.out.println("False");
}
答案 3 :(得分:0)
尝试使用trim()方法,trim从文本中删除空格:
String txt = "hello ";
System.out.println(txt.trim() + jhon);
console: hellojhon