2017-02-01 2 views
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의 사용자 타입 : 프로그램 '이 생성 할 등 R 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에 물체로 모두 진 정수와 문자열 (문자 및 완료)을 저장할 수 있어야합니다 (저장하는 쉬운 방법이 있는지, 그것을 포함하십시오) 프로그램을 상기 사용자 입력 배열을 판독하고 읽는 문자에 기초하여 명령을 실행한다.

+1

당신의 동안이 이해가되지 않습니다 다음, 당신은 조건을 가지고하지 않습니다 포함하는 경우 binaryinput == 0 && binaryinput = = 1, 아마도 당신은 ||을 사용하고 싶습니까? –

+0

문자열을 비교할 때 .equals를 사용하는 경우에도 ==를 사용하는 것과 동일합니다. –

답변

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]