我正在尝试计算字符串中的元音数量。问题是它可以正确编译,但是当我运行它时,命令窗口会在CountVowels.main(CountVowels.java:25)上显示“线程'main'中的异常java.lang.NullPointerException”。
import javax.swing.JOptionPane;
public class CountVowels
{
public static void main(String[] args)
{
String thingy = JOptionPane.showInputDialog("Please enter a sentence, and I will count the vowels.");
int count = 0;
char[] chars = new char[thingy.length()];
String[] letters = new String[thingy.length()];
for(int i = 0; i < thingy.length(); ++i)
{
chars[i] = thingy.charAt(i);
}
for(int i = 0; i < letters.length; ++i)
{
letters[i].valueOf(chars[i]);
}
for(int i = 0; i < chars.length; ++i)
{
if(letters[i].equals("a") || letters[i].equals("e") || letters[i].equals("i") || letters[i].equals("o") || letters[i].equals("u"))
{
++count;
}
}
System.out.println("There are " + count + " vowels in the string + " + thingy);
}
}
是什么原因造成的,如何解决,如何防止将来再次发生?
第25行是我的if语句:
if(letters[i].equals("a") || letters[i].equals("e") || letters[i].equals("i") || letters[i].equals("o") || letters[i].equals("u"))
{
++count;
}
线
letters[i].valueOf(chars[i]);
什么也没做。如果您将其更改为
letters[i] = String.valueOf(chars[i]);
您将所有元素设置letters
为相应的字符。那应该解决你的问题NullPointerException
。
您还可以通过使用一些正则表达式技巧来节省大量代码:
import javax.swing.JOptionPane;
public class CountVowels
{
public static void main(String[] args)
{
String input = JOptionPane.showInputDialog("Please enter a sentence, and I will count the vowels.");
String[] letters = input.split("(?<=.)(?=.)");
int count = 0;
for(int i = 0; i < letters.length; i++)
{
if(letters[i].matches("[aeiou]"))
{
count++;
}
}
System.out.println("There are " + count + " vowels in the string + " + input);
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句