如何检测运算符的空白

时间:2016-04-19 21:23:28

标签: java

我的代码存在问题。

我想检测" + "" +""+ ""+"等操作符的空白。

我希望我的输出是

  • 运营商的空白是“A”

如何修改我的代码?

我的代码在这里。

Scanner input = new Scanner (new File(PATH to file));
int plus1;
int plus2;
int plus3;
int plus4;
String sPlus = "";
while (in.hasNext()) {
    String line = in.nextLine();
    in.hasNextLine();
    LOC++;
    if (line.length() > 0) {

        plus1 = -1;
        plus2 = -1;
        plus3 = -1;
        plus4 = -1;
        while (true) {
            plus1 = line.indexOf(" + ", plus1 + 1);
            plus2 = line.indexOf(" +", plus2 + 1);
            plus3 = line.indexOf("+ ", plus3 + 1);
            plus4 = line.indexOf("+", plus4 + 1);

            if (plus1 > 0) {
                sPlus = "A";
            }
            if (plus2 > 0) {
                sPlus = "B";
            }
            if (plus3 > 0) {
                sPlus = "C";
            }
            if(plus4 > 0){
                sPlus = "D";
            }

            if ((plus1 < 0) || (plus2 < 0) || (plus3 < 0) || (plus4 < 0)) break;
        }
    }
}

2 个答案:

答案 0 :(得分:0)

您的逻辑存在两个问题:

  1. 您在trim()中使用line.indexOf(" +".trim(), plus2+1),其返回的索引为"+" NOT " +"
  2. 任何一次出现" + "都会被计算4次,因为line.indexOf(" +")也会计算" + "
  3. 的出现次数

    对于2.使用line.indexOf('+')会更容易,然后在索引之前和之后检查以查看有多少个空格:

    int plus = line.indexOf('+');
    if(plus == -1) break;
    if(line.charAt(plus-1) == ' ') {
        if(line.charAt(plus+1) == ' ') //A;
        else //B;
    }
    
    else if(line.charAt(plus+1) == ' ') {
        //C
    }
    
    else {
        //D
    }
    

答案 1 :(得分:-1)

正确 - 如果可以帮助。

if (line.indexOf(" + ") != -1) sPlus = "A";
else if (line.indexOf(" +") != -1) sPlus = "B";
else if (line.indexOf("+ ") != -1) sPlus = "C";
else if (line.indexOf("+") != -1) sPlus = "D";
else break;