2016-04-15 121 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

相关问题