首页 文章

存储和读取不同类型的用户输入

提问于
浏览
0

为了给出一些上下文,我试图只编程图灵机的简单功能 . 我无法将用户输入(字符串和整数)存储到arraylist中,然后通过数组读取程序并根据输入执行一系列命令 . 以下是信件 .

public void  postMenu()
{   
    say( "\tI\timport file"                       );
    say( "\tM\tenter multiple inputs"             );
    say( "\tX\texit program"                      );
    say( "\tS\tenter single input"                );
    say( "" );
    say( "Enter command:" );
}
    public void SecondMenu()
{
    say( "\t?\tprint current cell"                );
    say( "\t=\tassign new symbol to current cell" );
    say( "\tE\terase current cell"                );
    say( "\tL\tmove head to left"                 );
    say( "\tR\tmove head to right"                );
    say( "\tB\trewind to beginning of tape"       );
    say( "\tD\tdump contents of tape"             );
}

public void  say( String  s )
{
    System.out.println( s );
}

因此,例如,用户键入M以输入多个输入

例如:1 R 0 R'blank'R等程序会生成一个'tape',读取[1,0,'blank']我遇到问题的部分就是这部分 .

else
        if ( command == 'M')
        {
            say("Type Done to finish inputs");

            String input = getReq.next();
            int binaryinput = getReq.nextInt();

            do {
                List<Object>inputs = new ArrayList<Object>();

                while(!"Done".equalsIgnoreCase(input)){
                    inputs.add(Integer.parseInt(input));

                    input=getReq.next();
                    if(inputs.isEmpty())
                        return;
                }
            } while (binaryinput == 0 && binaryinput == 1 && input == " ");

现在,如果我开始输入字母,我会收到一条错误消息 . 对于用户输入:*整数不能是二进制数以外的数字(我不太确定'空'输入是否会被归类为字符串或int . )

  • 如果输入二进制以外的任何内容,它将返回一条错误消息,指出输入无效并要求输入正确 .

  • 也可以输入字母,以便程序在磁带上移动 .

  • 输入“完成”将结束输入 .

简而言之,我需要能够将二进制整数和字符串(字母和完成)作为对象存储到arraylist中(如果有更简单的存储方式,请包含它)并让程序读取所述用户输入数组并执行基于它读取的字母的命令 .

1 回答

  • 0

    你正在做太多的事情,而且你每次都重新初始化一个新的arraylist,这不是我想你想要的 . 根据我的理解,您只想在数组列表中添加1或0和字母?

    say("Type Done to Finish Inputs");
        String input = "";
        Integer binaryinput;
        List<Object>inputs = new ArrayList<Object>();
    
        do {
            input = getReq.nextLine();
            //check for binary
            if(input.matches("\\d"))
            {
                binaryinput = Integer.parseInt(input);
                if(binaryinput == 1 || binaryinput == 0)
                    inputs.add(binaryinput);
            }
            //check for a single character
            else
            {
                if(input.length() == 1)
                    inputs.add(input);  
            }
        } while (!input.equals("done"));
    

    以上代码示例

    Type Done to Finish Inputs
    1
    6
    2
    3
    4
    1
    0
    0
    1
    a
    b
    c
    d
    fg
    done
    

    输入包含以下内容

    [1, 1, 0, 0, 1, a, b, c, d]
    

相关问题