每当我尝试执行这段代码时,每当我输入一个字母的单词时,它都会返回一个错误,尽管编译很好,并且使用任何其他单词的短语都多于一个字母
我不明白为什么会这样,因为一切都应该返回正常,但只要代码经过一个字母的单词,它就会自动停止程序并结束它
import javax.swing.*;
// The "PigTrans" class.
public class PigTrans
{
public static void main (String[] args)
{
String userInput;
userInput = JOptionPane.showInputDialog (null, "Please enter a word");
System.out.println (PigTrans.pigTranslator (userInput));
} // main method
public static String pigTranslator (String word)
{
int[] anArray;
String phrase = "";
String[] words = word.split ("\\s+");
String[] newWord = new String [words.length];
for (int i = 0 ; i < words.length ; i++)
{
char number;
number = words [i].charAt (0);
int ascii;
ascii = (int) number;
if (word.length () <= 1)
{
if ((ascii >= 48) && (ascii <= 57))
{
newWord [i] = words [i];
phrase = phrase + newWord [i] + " ";
}
else
{
newWord [i] = words [i];
phrase = phrase + newWord [i] + " ";
}
}
else if ((ascii >= 65) && (ascii <= 90)) //Checks if the word begins with a capital
{
char word2;
word2 = words [i].charAt (0);
if (startsWithQU (words [i]) == true)
{
newWord [i] = words [i].substring (2);
newWord [i] = newWord [i] + "quay";
}
else if (checkAscii (word2) == true)
{
newWord [i] = words [i] + "way";
}
else
{
String letter = "";
letter = words [i].substring (0, 1);
newWord [i] = words [i].substring (1);
newWord [i] = newWord [i] + letter + "ay";
}
String firstLetter, restOfWord, FirstLetter2;
firstLetter = newWord [i].substring (0, 1);
restOfWord = newWord [i].substring (1);
restOfWord = restOfWord.toLowerCase ();
firstLetter = firstLetter.toUpperCase ();
newWord [i] = firstLetter.concat (restOfWord);
phrase = phrase + newWord [i] + " ";
}
else
{
char word2;
word2 = words [i].charAt (0);
if (startsWithQU (words [i]) == true)
{
newWord [i] = words [i].substring (2);
newWord [i] = newWord [i] + "quay";
}
else if (checkAscii (word2) == true)
{
newWord [i] = words [i] + "way";
}
else
{
String letter = "";
letter = words [i].substring (0, 1);
newWord [i] = words [i].substring (1);
newWord [i] = newWord [i] + letter + "ay";
}
phrase = phrase + newWord [i] + " ";
}
}
return phrase;
} //pigTranslator
public static boolean checkAscii (char letter)
{
boolean correct = false; //Declares the boolean variable as false
int ascii;
ascii = (int) letter;
if ((ascii == 65) || (ascii == 69) || (ascii == 73) || (ascii == 79) || (ascii == 85) || (ascii == 97) || (ascii == 101) || (ascii == 105) || (ascii == 111) || (ascii == 117))
{
correct = true;
}
return correct;
} // PigMethods class
public static boolean startsWithQU (String word)
{
boolean checkQU = false; //Declares variables needed to check for "qu." Program takes two letters from the word and check if it starts with "qu."
String QUcheck;
QUcheck = word.substring (0, 2);
if (QUcheck.equalsIgnoreCase ("qu")) //When the word starts with "qu, return of boolean value becomes true."
{
checkQU = true;
}
return checkQU; //If return value is not true, the varuiable returns the value of checkQU.
} //startsWithQU
} // PigTrans class
1条答案
按热度按时间qv7cva1a1#
线路有问题:
当你把一个字母和一个空格
split
方法创建一个2元素数组-第一个元素是字母,第二个元素是空字符串。所以charat(0)显然为空字符串抛出了一个错误!解决办法是
trim
在把绳子喂给split
方法。另外,在这行:
情况应该是
== 1
因为你不能用0长度的字符串做任何事情。