1字母单词与pig拉丁语编程

v09wglhw  于 2021-06-21  发布在  Pig
关注(0)|答案(1)|浏览(364)

每当我尝试执行这段代码时,每当我输入一个字母的单词时,它都会返回一个错误,尽管编译很好,并且使用任何其他单词的短语都多于一个字母
我不明白为什么会这样,因为一切都应该返回正常,但只要代码经过一个字母的单词,它就会自动停止程序并结束它

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
qv7cva1a

qv7cva1a1#

线路有问题:

number = words [i].charAt (0);

当你把一个字母和一个空格 split 方法创建一个2元素数组-第一个元素是字母,第二个元素是空字符串。所以charat(0)显然为空字符串抛出了一个错误!
解决办法是 trim 在把绳子喂给 split 方法。
另外,在这行:

if (word.length () <= 1)

情况应该是 == 1 因为你不能用0长度的字符串做任何事情。

相关问题