我需要编写for循环来遍历String对象(嵌套在String[]
数组中),以使用以下条件对此字符串中的每个字符进行操作。
每次我尝试使用各种循环和各种策略/实现时,我都会以某种方式出现StringIndexOutOfBoundsException
错误。
有什么想法吗?
更新:这是所有代码。我不需要帮助程序的其余部分,只是这一部分。但是,我知道您必须看到系统正在运行。
import java.util.Scanner;
import java.io.IOException;
import java.io.File;
public class plT
{
public static void main(String[] args) throws IOException
{
String file = "";
String line = "";
String[] tempString;
String transWord = ""; // final String for output
int wordTranslatedCount = 0;
int sentenceTranslatedCount = 0;
Scanner stdin = new Scanner(System.in);
System.out.println("Welcome to the Pig-Latin translator!");
System.out.println("Please enter the file name with the sentences you wish to translate");
file = stdin.nextLine();
Scanner fileScanner = new Scanner(new File(file));
fileScanner.nextLine();
while (fileScanner.hasNextLine())
{
line = fileScanner.nextLine();
tempString = line.split(" ");
for (String words : tempString)
{
if(isVowel(words.charAt(0)) || Character.isDigit(words.charAt(0)))
{
transWord += words + "-way ";
transWord.trim();
wordTranslatedCount++;
}
else
{
transWord += "-";
// for(int i = 0; i < words.length(); i++)
transWord += words.substring(1, words.length()) + "-" + words.charAt(0) + "ay ";
transWord.trim();
wordTranslatedCount++;
}
}
System.out.println("\'" + line + "\' in Pig-Latin is");
System.out.println("\t" + transWord);
transWord = "";
System.out.println();
sentenceTranslatedCount++;
}
System.out.println("Total number of sentences translated: " + sentenceTranslatedCount);
System.out.println("Total number of words translated: " + wordTranslatedCount);
fileScanner.close();
stdin.close();
}
public static boolean isVowel (char c)
{
return "AEIOUYaeiouy".indexOf(c) != -1;
}
}
此外,这里是从中提取文本的示例文件(我们正在跳过第一行):
2
你今天好吗?
这个例子的编号为1234
答案 0 :(得分:0)
假设问题是StringIndexOutOfBoundsException
,那么唯一的方法就是words
中的一个是空字符串。了解这一点也提供了解决方案:当if
的长度为零时,执行不同的操作(else
\ words
,以区别对待特殊情况。这是一种方法:
if (!"".equals(words)) {
// your logic goes here
}
另一种方式,就是在循环中简单地做这个(当你有一个循环时):
if ("".equals(words)) continue;
// Then rest of your logic goes here
如果不是这种情况或问题,那么线索就在您未向我们展示的代码部分中(在这种情况下,您根本没有给我们相关的代码)。更好地提供可用于复制问题(测试用例)的完整代码子集,以及完整的例外(因此我们甚至不必自己尝试。