如何用Java编写查找';00';检查字符串中的每个字符?

如何用Java编写查找';00';检查字符串中的每个字符?,java,string,character,Java,String,Character,我正在尝试编写一个简单的程序,要求用户输入一个由0和1组成的输入,并检查每个字符是否有双零'00',如果当前字符是'1',则程序被视为处于状态“a”,因此它会打印状态和字符,如果字符是'0',则程序处于状态“B”如果有一个'00',程序处于状态“C”,在进入状态“C”(找到'00'后)后,程序无法退出该状态,这意味着它将继续检查每个字符,但生成的字符串应为“状态C”+字符,即使该字符为单个零或一 到现在为止,我有这样的东西 import java.util.Scanner; publi

我正在尝试编写一个简单的程序,要求用户输入一个由0和1组成的输入,并检查每个字符是否有双零'00',如果当前字符是'1',则程序被视为处于状态“a”,因此它会打印状态和字符,如果字符是'0',则程序处于状态“B”如果有一个'00',程序处于状态“C”,在进入状态“C”(找到'00'后)后,程序无法退出该状态,这意味着它将继续检查每个字符,但生成的字符串应为“状态C”+字符,即使该字符为单个零或一

到现在为止,我有这样的东西

import java.util.Scanner;
    
public class onesandzeroes {
     public static void main(String[] args) {     
         System.out.println("Write a String that consists of 0 and 1");
           Scanner scanner = new Scanner(System. in);
           String inputString = scanner.nextLine();
           
           for (int index = 0; index < inputString.length();
index++) {
     char aChar = inputString.charAt(index);
     if (aChar == '0'){
         System.out.println("State B " + aChar);
         
         /* This is the part I'm having trouble with, I was thinking about something like
         
         if(aChar =='0' && charAt(index + 1 == '0')){
                 System.out.println("State C" + aChar + charAt(index + 1);
                 }
         to look for a '0' that is followed by another '0' but it doesn't work
         */
         
     } else{
         System.out.println("State A " + aChar);
     }
}
    }    
    
}
import java.util.Scanner;
公共一级和零级{
公共静态void main(字符串[]args){
System.out.println(“编写一个由0和1组成的字符串”);
扫描仪=新的扫描仪(System.in);
String inputString=scanner.nextLine();
for(int index=0;index
我知道您可能可以查看整个字符串,并且只检查是否有“00”,但我想单独检查每个字符,除非它查找“00”

所以我有两个问题: 如何在字符串中查找“00”?理想的方法是在每个“0”中检查后面的“0”

如何使程序仅在找到第一个“00”后打印“状态C”+字符?也就是说,在程序找到一个“00”后,它应在状态C中保留“00”以及其后的每一个字符。

可能是这样:

import java.util.Scanner;

public class StringScanner {

    public static void main(String[] args) {

        System.out.println("Write a String that consists of 0 and 1");

        final var scanner = new Scanner(System.in);

        final String inputString = scanner.nextLine();

        var currentState = State.A;

        for (int index = 0; index < inputString.length(); index++) {

            final char currentChar = inputString.charAt(index);

            System.out.println("The current char is " + currentChar + " and I'm in state " + currentState);

            if (currentState == State.C) {
                // do nothing because final state has already been reached
                continue;
            }

            if (currentState == State.B) {
                if (currentChar == '0') {
                    // 2 zeros found got into final state :)
                    currentState = State.C;
                } else {
                    //
                    currentState = State.A;
                }
                continue;
            }

            if (currentState == State.A) {
                if (currentChar == '0') {
                    currentState = State.B;
                }
            }
        }
    }

    private enum State {
        A, B, C
    }

}
import java.util.Scanner;
公共类字符串扫描程序{
公共静态void main(字符串[]args){
System.out.println(“编写一个由0和1组成的字符串”);
最终var扫描器=新扫描器(System.in);
final String inputString=scanner.nextLine();
var currentState=State.A;
对于(int index=0;index
首先可以检查
inputString.contains(“00”)
如果是真的,写

inputString.charAt(inputString.indexOf("00") + 2);

inputString.contains(“00”)?我很感激所有的答案,但你的答案是最有帮助的,我已经在考虑创建一个名为“state”的字符串变量,但是你的解决方案要优雅得多,我还不知道“enum”是什么意思,所以我现在要研究一下,谢谢!