Java 非执行循环和子数组
我试图找到数组中某个特定单词的一行中最多的辅音。我在中间有一个while循环,我已经说过了,但是由于某种原因,它没有执行。有人知道为什么吗?另外,您可能会注意到,我有一个int空格,因为我试图找到String[]单词的子数组。我该怎么做呢Java 非执行循环和子数组,java,loops,sub-array,Java,Loops,Sub Array,我试图找到数组中某个特定单词的一行中最多的辅音。我在中间有一个while循环,我已经说过了,但是由于某种原因,它没有执行。有人知道为什么吗?另外,您可能会注意到,我有一个int空格,因为我试图找到String[]单词的子数组。我该怎么做呢 import java.io.*; import java.util.* import java.util.Arrays; public class Main { public static void main (String[] args) {
import java.io.*;
import java.util.*
import java.util.Arrays;
public class Main
{
public static void main (String[] args)
{
System.out.print("Please enter a phrase to translate: ");
Scanner scan = new Scanner(System.in);
String str = scan.nextLine();
String[] words = str.split("\\s+");
int spaces = (word.length - 1);
for (int i = 0; i < words.length; i++)
{
String a = words[i].substring(0,1);
int k = a.length();
int n = words[i].length();
if (!(a.contains("a") || a.contains("e") || a.contains("i") || a.contains("o") || a.contains("u")))
{
while (k < 5) // start while
{
if (n > k)
{
a = words[i].substring(0,k);
k = k + 1;
}
}
} // end while
if (words[i].startsWith("a") || words[i].startsWith("e") || words[i].startsWith("i") || words[i].startsWith("o") || words[i].startsWith("u"))
{
System.out.print(words[i] + "way");
}
else if (!(a.contains("a") || a.contains("e") || a.contains("i") || a.contains("o") || a.contains("u")))
{
String answer = words[i].substring(k,n);
System.out.print(answer + a + "ay");
}
}
}
}
import java.io.*;
导入java.util*
导入java.util.array;
公共班机
{
公共静态void main(字符串[]args)
{
System.out.print(“请输入要翻译的短语:”);
扫描仪扫描=新扫描仪(System.in);
String str=scan.nextLine();
String[]words=str.split(\\s+);
int空格=(word.length-1);
for(int i=0;ik)
{
a=字[i]。子串(0,k);
k=k+1;
}
}
}//结束时
if(单词[i].startsWith(“a”)||单词[i].startsWith(“e”)|单词[i].startsWith(“i”)|单词[i].startsWith(“o”)|单词[i].startsWith(“u”))
{
系统输出打印(字[i]+“方式”);
}
如果(!(a.contains(“a”)| a.contains(“e”)| a.contains(“i”)| a.contains(“o”)| a.contains(“u”))
{
字符串答案=单词[i]。子字符串(k,n);
系统输出打印(答案+a+“ay”);
}
}
}
}
鉴于您描述的“试图在一行中为数组中的某个特定单词找到最多数量的辅音”,我认为沿着这些思路(不是编译或测试-只是为了说明方法)可以更简单地遵循/调试/测试/维护(也只查看当前的单词[I]
-仍然需要一个外部循环来迭代您的单词:
String consgroups[] = word[i].split("[aeiou]"); // split on all vowels
int maxlen = consgroups[0].length, maxidx = 0;
for (int j = ; j < consgroups.length; ++j) // iterate over groups and find max
if (consgroups[j].length > maxlen)
{ maxidx = j;
maxlen = consgroups[i].length;
}
String consgroups[]=word[i].split(“[aeiou]”;//对所有元音进行拆分
int maxlen=consgroups[0]。长度,maxidx=0;
for(int j=;j最大长度)
{maxidx=j;
maxlen=consgroups[i]。长度;
}
考虑到你对pig拉丁语的评论,我不确定除了单词开头以外的辅音组为什么重要,但也许我误解了你的描述
编辑:现在我已经仔细研究了一下,我认为这种方法可能更有用:
String vowels = "aeiou";
int i = 0;
while ((i < word.length) && (!vowels.contains(word.subSequence(i, i + 1))))
++i;
// now word[i] is the first non-vowel character in word
if (i == word.length) // word was all consonants
{ ...
}
else
if (i) // word has a consonant prefix
{ ...
}
else // word starts with a vowel
{ ...
}
String元音=“aeiou”;
int i=0;
while((i
(用**
突出显示在“code”部分中不起作用。)k是否曾经小于5?k是一个子串的长度(0,1),因此是的,它应该从长度1开始,它应该始终小于5。只有当字符串a
时,才打算运行该,而循环(看起来只有一个字符串)不包含任何元音?`因为这就是你那里的元音……我会试试这个,我只在单词的开头寻找辅音组。找不到单词。子序列和if语句的起始位置,它们应该是我已经拥有的还是while循环中的新语句?String.subsequence()
自JDK 1.4以来就一直存在。我可能会把word
用作变量,这让您感到困惑-在您的情况下,它可能是words[I]
-假设word
是String
,而不是words
,后者是String[]
…它仍然找不到方法。另外,你知道如何找到子数组或基本上以类似于string.substring(int,int)的方式从数组中取出一个元素吗?它实际上是string.subSequence()
-我漏掉了cAmELcAse位。和Arrays.copyOfRange()
可能就是您想要的。有关完整的API参考,请参阅。