2016-04-15 116 views
1

我的40字符串字符串游戲以運行時錯誤結束,有人可以幫我理解爲什麼嗎?代碼只需要告訴一個字符串中的組合數量。爲什麼在此代碼中存在運行時錯誤?

下面是一個例子:

輸入:

4         1       
HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH      2  
TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT        
3        
HHTTTHHTTTHTHHTHHTTHTTTHHHTHTTHTTHTTTHTH        
4     HTHTHHHTHHHTHTHHHHTTTHTTTTTHHTTTTHTHHHHT 

輸出:

1 0 0 0 0 0 0 0 38     2 38 0 0 0 0 0 0 0   
3 4 7 6 4 7 4 5 1     4 6 3 4 5 3 6 5 6 

這是我的代碼:

import java.util.*; 
import java.lang.*; 
import java.io.*; 

class Ideone 
{ 
    public static void main (String[] args) throws java.lang.Exception 
    { 
    BufferedReader br=new BufferedReader(new InputStreamReader(System.in)); 
    int t; 
    t=Integer.parseInt(br.readLine()); 
    while((t--)!=0) 
    { 
     int N,i,j; 
     N=Integer.parseInt(br.readLine()); 
     int c []={0,0,0,0,0,0,0,0}; 
     String arr [] ={"TTT","TTH","THT","THH","HTT","HTH","HHT","HHH"}; 
     String str,str1; 
     N=Integer.parseInt(br.readLine()); 
     str=br.readLine(); 
     for(i=0;i<=37;i++) 
     { 
     str1=""; 
     str1=str.substring(i,i+3); 
     for(j=0;j<8;j++) 
     { 
      if(str1.equals(arr[j])) 
      { 
      c[j]++; 
      break; 
      } 
     } 
     } 
     System.out.print(N); 
     for(i=0;i<8;i++) 
     System.out.print(" "+c[i]); 
     System.out.println(); 
    } 
    } 
} 

錯誤:

Runtime error time: 0.1 memory: 320576 signal:-1

+0

對不起...剛纔添加了獲得的錯誤 –

回答

0

這是您的程序的簡化版本。現在顯示輸入字符串前面的迭代編號:

import java.util.*; 
import java.lang.*; 
import java.io.*; 

public class HelloWorld{ 

    public static void main(String []args) throws java.lang.Exception{ 
     BufferedReader br=new BufferedReader(new InputStreamReader(System.in)); 

     System.out.print("Please enter number of iterations : "); 
     int t = Integer.parseInt(br.readLine()); 
     for(int counter=1; counter<= t; counter++) 
     { 
      int c []={0,0,0,0,0,0,0,0}; 
      String arr [] = {"TTT","TTH","THT","THH","HTT","HTH","HHT","HHH"}; 
      System.out.print(counter + " "); 
      String str = br.readLine(); 

      for(int i=0; i<str.length()-3; i++) 
      { 
       String str1 = str.substring(i,i+3); 

       for(int j=0; j<8; j++) 
       { 
        if(str1.equals(arr[j])) 
        { 
         c[j]++; 
         break; 
        } 
       } 
      } 

      for(int i=0;i<8;i++){ 
       System.out.print(" "+c[i]); 
      } 
      System.out.println(); 
     } 
    } 
} 

它正在工作。

+0

嘗試過<= 36 ...甚至<= 35檢查....同樣的錯誤@Ash –

+0

讓我爲你準備一個工作示例 – Ash

+0

不知道什麼是N = Integer.parseInt(br.readLine())的目的; – Ash

相關問題