我不知道我做错了什么。我忘记了最后的事情或我错过了什么。
我想要完成的是用户输入一个字符串,例如:aaabbcccc
然后输出:a3bbc4
,所以任何包含3个或更多字符的字符都应显示该字母然后它在字符串中的次数。
我是否在某个地方搞砸了我看不到,或者它是在它给我输出的时候到底。 p>
TL; DR字符串输入:aaabbcccc
输出:a3bbc4
。让用户输入然后在尝试提供输出时给出错误。
执行命令
Enter a string(only lowercase): aaabb
Exception in thread "main" java.lang.NullPointerException
at hw9.RunLengthCode.compress(Hw9.java:26)
at hw9.RunLengthCode.getCText(Hw9.java:20)
at hw9.Hw9.main(Hw9.java:55)
C:\Users\extrapcuser\AppData\Local\NetBeans\Cache\8.1\executor-
snippets\run.xml:53: Java returned: 1
BUILD FAILED (total time: 5 seconds)
代码:
import java.util.Scanner;
class RunLengthCode
{
String str1;
String cText;
String pText;
public String setPText(String str)
{
pText = str.toLowerCase();
return pText;
}
public String getCText()
{
compress(cText);
return cText;
}
public void compress(String str)
{
int count = 1;
for(int i = 1; i < str1.length(); i++)
{
if(str1.charAt(i) == str1.charAt(i-1))
{
count++;
}
else if(count >= 3)
{
String stra = str.substring(0, i-count);
String strb = str.substring(i-count+1, i-count+2);
String strc = str.substring(i);
str = stra + strb + count + strc;
count = 1;
i=1;
}
}
if(count >= 3)
{
str = str.substring(0, str.length()-count+1);
}
cText = str;
}
}
public class Hw9
{
public static void main(String[] args)
{
Scanner in = new Scanner(System.in);
RunLengthCode rLc = new RunLengthCode();
System.out.print("Enter a string(only lowercase): ");
String pText = in.nextLine();
rLc.setPText(pText);
System.out.println(rLc.getCText());
}
}
答案 0 :(得分:1)
我在代码中发现了以下缺陷。
String id="ID:SampleID";
String arr[] = id.split(":");
String key=arr[0];
String value=arr[1];
if (value != null && "".equals(value.trim())){
System.out.println("ALL IS PERFECT!!");
}
else{
System.out.println("RAISE ERROR!!");
}
的原因是你没有初始化
字符串str1。并且您正在访问空引用。很明显
抛出NullPointerException 我更希望使用NullPointerException
在HashMap
中找到重复的字符。
String
import java.util.Scanner;
public class DuplicateCharactersInString {
import java.util.LinkedHashMap;
}
输出:
static LinkedHashMap<Character, Integer> charMap = new LinkedHashMap<Character, Integer>();
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.print("Enter a string(only lowercase): ");
String pText = in.nextLine();
pText = pText.toLowerCase();
for (int i = 0; i < pText.length(); i++) {
if (charMap.containsKey(pText.charAt(i))) {
charMap.put(pText.charAt(i), charMap.get(pText.charAt(i)) + 1);
} else {
charMap.put(pText.charAt(i), 1);
}
}
if (!charMap.isEmpty()) {
StringBuilder builder = new StringBuilder();
for (Character character : charMap.keySet()) {
int value = charMap.get(character);
if (value > 2) {
builder.append(character);
builder.append(value);
} else {
for (int i = 1; i <= value; i++) {
builder.append(character);
}
}
}
System.out.println(builder);
} else {
System.out.println("Please enter the string");
}
}
a3b3c5d