为了给出一些上下文,我试图只编写图灵机的简单功能。 我无法将用户输入(字符串和整数)存储到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 '空白' [R 等等 该程序将产生一个“磁带”,读取[1,0,'空白'] 我遇到麻烦的部分是这部分。
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中(如果有更简单的存储方式,请包含它)并让程序读取所述用户输入数组并根据它读取的字母执行命令。
答案 0 :(得分: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]