Java 整数输入解析器不工作

Java input parser for integers not working

我正在研究解析整数。我为我的程序提供一行整数。删除所有空格。那么逻辑是这样的:

If I get a 0, 
   If the next char is 1, 
      Print out a 0
   If the next char is 0,
      Print out a 1
   Forget the 2 chars I just checked
If I get a 1, 
   If the next char is 0, 
      Print out a 1
   If the next char is 1,
      print out a 0
   Forget the 2 chars I just checked

所以输入 10100 1011011 00,我应该得到 1100101。这是我目前的代码:

import java.util.Scanner;

public class Blah {
    public static void main (String args[]) {
        Scanner input = new Scanner(System.in);
        String text = input.nextLine();

        int i;
        for (i = 0; i < text.length(); i++) {
            if (text.charAt(i) == '0') {
                if (text.charAt(i++) == '1') {
                    System.out.print("0");
                } else if (text.charAt(i++) == '0') {
                    System.out.print("1");
                }
                if (i < text.length()) 
                     i++;
            } else {
                if (text.charAt(i++) == '0') {
                    System.out.print("1");
                    i++;
                } else if (text.charAt(i++) == '1') {
                    System.out.print("0");
                }
                if (i < text.length()) 
                      i++;
            }
        }
    }
}

然而,这并没有给我预期的结果。请帮忙。谢谢。

您应该使用 i+1++i 而不是 i++ 因为这意味着它将使用当前值然后递增 i,而不是您想要的行为获取下一个值。

编辑:已更新以显示代码中的更改

int i;
for (i = 0; i < text.length(); i++) {
    if (text.charAt(i) == '0') {
        if (text.charAt(++i) == '1') {
            System.out.print("0");
        } else if (text.charAt(++i) == '0') {
            System.out.print("1");
        }
        if (i < text.length()) {
            i++;
        } 
    } else {
        if (text.charAt(++1) == '0') {
            System.out.print("1");
            i++;
        } else if (text.charAt(++i) == '1') {
            System.out.print("0");
        }
        if (i < text.length()) {
                  i++;
        }
    }
}

我会将您的增量更改为 i+=2 并删除其他地方 i 增量。也使用 i+1 来检查下一个字符,而不是 i++。在进入循环之前使用正则表达式去除所有空格。

Scanner input = new Scanner(System.in);
String text = input.nextLine();
text=text.replaceAll("\s+","");
int i;
for (i = 0; i < text.length()-1; i+=2) {
   if (text.charAt(i) == '0') {
      if (text.charAt(i+1) == '1') 
         System.out.print("0");
       else if (text.charAt(i+1) == '0') {
         System.out.print("1");
    } else {
       if (text.charAt(i+1) == '0') 
         System.out.print("1");
       else if (text.charAt(i+1) == '1') 
         System.out.print("0");
    }
}