首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用开关的dfa

使用开关的dfa
EN

Stack Overflow用户
提问于 2012-07-16 17:46:49
回答 1查看 1.2K关注 0票数 0

帮帮忙,先生,我正在试着做一些简单的dfa,但它不能正常工作。我正在尝试测试来自包含111,000,110的文本文件的3行输入。我试图将它们分离为3个令牌,但当涉及到测试时,程序仍然将其作为一个整体运行。提前感谢您的帮助

代码语言:javascript
复制
 import java.util.*;
 import java.io.*;

 public class A
 {
 public static void main(String args[]) throws Exception
 {
    FileReader fileInput = new FileReader("B:\\input1.txt");
    BufferedReader readInput = new BufferedReader(fileInput);

    FileWriter fileOutput = new FileWriter("B:\\output.txt");
    PrintWriter outFile = new PrintWriter(fileOutput);

    Scanner scanLine = new Scanner(readInput);
    int cs = 0;
    final int q0 = 0;
    final int q1 = 1;

    int noOfLines = 0;

    while(scanLine.hasNextLine())
    {
        String[] tokens = scanLine.next().split("\n");

        for(String words : tokens)
        {
          outFile.println(words);
          char[] stringArray = words.toCharArray();

        for(char x : stringArray)
        {
            switch(cs)
            {
                case q0:
                    switch(x)
                    {
                        case '1':
                        cs = q1;
                        break;

                        case '0':
                        cs = q0;
                        break;

                        default:
                        outFile.println("error");
                        break;
                    }
                break;

                case q1:
                    switch(x)
                    {
                        case '1':
                        cs = q1;
                        break;

                        case '0':
                        cs = q1;
                        break;

                        default:
                        outFile.print("error");
                        break;
                    }
                break;

                default:
                break;
            }
        }//end for char array
        outFile.println();
        noOfLines++;
        if(cs == q1)
        {
        outFile.println("accepted");
        }
        else
        {
        outFile.println("rejected");
        }//end if else
        }//end for string array
    }//end while

    outFile.println();

    fileInput.close();
    readInput.close();
    outFile.close();
    fileOutput.close();
  }

}
EN

回答 1

Stack Overflow用户

发布于 2012-07-16 17:51:41

你的cs变量必须是String Datatype而不是Integer,这似乎是一个错误。

下面是一个例子。

代码语言:javascript
复制
public class StringSwitchDemo {

    public static int getMonthNumber(String month) {

        int monthNumber = 0;

        if (month == null) {
            return monthNumber;
        }

        switch (month.toLowerCase()) {
            case "january":
                monthNumber = 1;
                break;
            case "february":
                monthNumber = 2;
                break;
            case "march":
                monthNumber = 3;
                break;
            case "april":
                monthNumber = 4;
                break;
            case "may":
                monthNumber = 5;
                break;
            case "june":
                monthNumber = 6;
                break;
            case "july":
                monthNumber = 7;
                break;
            case "august":
                monthNumber = 8;
                break;
            case "september":
                monthNumber = 9;
                break;
            case "october":
                monthNumber = 10;
                break;
            case "november":
                monthNumber = 11;
                break;
            case "december":
                monthNumber = 12;
                break;
            default: 
                monthNumber = 0;
                break;
        }

        return monthNumber;
    }

    public static void main(String[] args) {

        String month = "August";

        int returnedMonthNumber =
            StringSwitchDemo.getMonthNumber(month);

        if (returnedMonthNumber == 0) {
            System.out.println("Invalid month");
        } else {
            System.out.println(returnedMonthNumber);
        }
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11501845

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档