如何解决从起点仅提取字符串中的数字
假设我从一个解码了霍夫曼文本和其中字符频率的文件中取出一个字符串。例如,取出的字符串是:"000111010 h:2#c:1" 我只想取 2 和 1 并将它们放入称为频率的整数数组列表中。 这是我为它编写的方法,但它似乎不起作用:
public void extractFrequency() {
char[] stringArray= new char[finalText.length()];
stringArray=finalText.tochararray();
boolean startingNow=false;
for (int i = 0; i < stringArray.length; i=+3) {
if(stringArray[i]==' ')
startingNow=true;
if(startingNow=true) {
frequencies.add((int)stringArray[i]);
i++;
}
}
System.out.println(frequencies);
}
你能帮我吗?
解决方法
在检查 startingNow
是否为真的同时,检查当前字符是否为数字。如果是数字,则将其添加到列表中。但我不明白你为什么在循环中做 i+=3
。这可能对你有用。我在将它添加到列表时减去 48,以获得原始数字,如字符系统中的“0”从 48 开始。
public void extractFrequency() {
char[] stringArray= new char[finalText.length()];
stringArray=finalText.toCharArray();
boolean startingNow=false;
for (int i = 0; i < stringArray.length; i++) {
if(stringArray[i]==' ')
startingNow=true;
if(startingNow==true && Character.isDigit(stringArray[i])) {//should be startingNow==true not startingNow=true
frequencies.add(stringArray[i] - 48);
}
}
System.out.println(frequencies);
}
,
它不起作用,因为您的代码中有错误 if(startingNow=true)
应该是 if(startingNow==true)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。