2015-09-23 23 views
0

我需要爲自動機類創建一個簡單的自動機。我正在使用Java,我無法弄清楚爲什麼我的程序過早退出。我試着調試它,在任何地方都有打印語句來確定它停止的位置,雖然我知道它停在哪裏,但我沒有看到任何會使程序停止工作的東西。停工發生在第27行(右這裏我SOP「輸入一串數字......」。
知道我,這可能是簡單的東西,但我不知道這一個了。Java程序過早退出程序

import java.util.*; 
public class hw1 { 
public static void main(String[] args) { 
    Scanner input = new Scanner(System.in); 

    System.out.println("Please indicate the number of states"); 
    int numState = input.nextInt(); 
    int[] state = new int[numState]; 
    boolean[] accept = new boolean[numState]; 
    for (int i = 0; i < numState; i++) { 
     System.out.println("Is the state q" + (i + 1) + " a final state? (Answer 1 for yes; 0 for no)"); 
     int finalState = input.nextInt(); 
     if (finalState == 1) 
      accept[i] = true; 
    } // for 
    System.out.println("Enter the number of symbols s: "); 
    int numSym = input.nextInt(); 

    int[][] next = new int[numState][numSym]; 
    for (int i = 0; i < numState; i++) { 
     for (int j = 0; j < numSym; j++) { 
      System.out.println("What is the number for the next state for q" + i + " when it gets symbol " + j); 
      next[i][j] = input.nextInt(); 
     }//nested for 
    }//for 

    String digits = input.nextLine(); 
    System.out.print("Enter a string of digits (0-9) without spaces to test:"); 

    int[] digitArray = new int[digits.length()]; 
    for (int i = 0; i < digits.length(); i++) { 
     digitArray[i] = digits.charAt(i); 
    } 
    for (int i = 0; i < digits.length(); i++) { 
     System.out.print(digitArray[i] + " ,"); 
    } 
    System.out.println("end of program"); 
}// main; 

}// class 

回答

0

更改您的代碼:

input.nextLine(); 
System.out.print("Enter a string of digits (0-9) without spaces to test:"); 
String digits = input.nextLine(); 

這將讓而​​忽略離開通話後流中的換行符nextInt()

+0

我把打印語句nextLine語句之後,它似乎仍然沒有工作 –

+0

展我們更新的代碼(編輯您的問題) – TheLostMind

+0

根據您的要求更新它 –