【发布时间】:2014-02-27 14:08:24
【问题描述】:
我有一个像“ali li vali bali”这样的大字符串,我想知道所有单词(我的意思是像 li 这样的单个单词)重复了多少次(ali、li、vali 和 bali 仅被视为子字符串) 除了它自己的存在。
例如:li 是一个大字符串中的子字符串,它重复三次而不是它自己的存在。
li in ali, li in vali 和 li in bali。计数是:3。
这是我的代码和我得到的错误:
import java.util.*;
public class main{
public static void main(String args[]){
String str="";
Scanner scan= new Scanner(System.in);
while(scan.hasNext())
{
str+= scan.nextLine();
}
int n= str.trim().split("\\s+").length;
String[] wordsArray=str.split(" ");
substring sub=new substring();
for(int i=0;i<wordsArray.length;i++){
int count=sub.sub(wordsArray[i],str);
csub+=count;
}
System.out.println("number of substring: "+csub);
和子串做:
public class substring{
public int sub(String str,String str2){
String[] wordsArray=str2.split(" ");
int len=str.length();
int b=0;
String[] str1=new String[len*2+2];
int k=0;
for (int from = 0; from < str.length(); from++) {
for (int to = from + 1; to <= str.length(); to++) {
str1[k]=str.substring(from, to);
k++;
}
}
int index = 0;
int count = 0;
for(int i=0;i<str1.length;i++){
if(str1[i].length()>2){
while ((index = str2.indexOf(str1[i], index)) != -1) {
index += str1[i].length();
count++;
b++;
}
}
}
return b;
}
}
怎么了?
**I got this error:**
Expection in thread "main" java lang.NullPointerExpection
at substring.sub<substring.java:20>
at main.main<main.java:52>
【问题讨论】:
-
第20行是哪一行?
-
天哪,你的代码人缩进。并将您的班级名称大写。
-
在子字符串中:count++;
-
发布到 SO 时缩进有时会丢失。 OP 并不总是不缩进他的代码....
-
天哪:str+= scan.nextLine();。那个可怜的字符串。