0

我需要设置一个变量false,如果字符串以'1'开头,但下面的代码返回一个真值?我试过“苹果”这个词。我的代码有问题吗?

String msgName=request.getParameter("msgName");
boolean insideIf=false; 

if(msgName.substring(0,1).equals("1"));
    {
        insideIf=true;
                System.out.println("if status :"+msgName.substring(0,1).equals("1"));

    } System.out.println("insideIf :"+insideIf);
4

5 回答 5

7

它是:-) 你的 if 后面有一个分号

String msgName=request.getParameter("msgName");
boolean insideIf=false; 

if(msgName.substring(0,1).equals("1"))
    {
        insideIf=true;
                System.out.println("if status :"+msgName.substring(0,1).equals("1"));

    } System.out.println("insideIf :"+insideIf);
于 2012-04-23T07:35:14.370 回答
5
if(msgName.substring(0,1).equals("1"));

如果条件为真,则实际上正在执行一个空语句- 稍后,它总是调用该块:

{
    insideIf=true;
            System.out.println("if status :"+msgName.substring(0,1).equals("1"));

}

解决方案:

  1. [不太优雅] - 删除;
  2. 您总是可以设置insideIf = msgName.substring(0,1).equals("1");- if-statement 没有真正的理由,您只需要表达式的布尔值!
于 2012-04-23T07:37:25.983 回答
4

您在 if-statement 的末尾添加了一个分号,因此您的 if-else 条件根本没有执行。这是我认为可行的方法

String msgName=request.getParameter("msgName");
 boolean insideIf=false; 

if(msgName.substring(0,1).equals("1"))
{
    insideIf=true;
            System.out.println("if status :"+msgName.substring(0,1).equals("1"));

} System.out.println("insideIf :"+insideIf);
于 2012-04-23T07:34:56.623 回答
1

也许选择:

myString.startsWith('1');

我认为这不需要解释。

于 2012-04-23T07:36:04.987 回答
1

这是错误行

if(msgName.substring(0,1).equals("1")); 

不应该有“;” 在 if 语句之后。因为你已经放置了“;”所以这个 if 循环在这里结束并且它正在按顺序执行下一行。我希望它是自我解释的。关于 Anil

于 2012-04-23T07:37:51.193 回答