我有一个简单的java语句:
String[] ykl = yklList.get(0).split(" ");
其中,yklList是包含被分成单词的句子的ArrayList。以上工作正常。
当我现在尝试循环时:
Loop:1
for (int i=0;i<=4;i++)
{
String[] ykl = yklList.get(i).split(" ");
}
它似乎不起作用,并抛出一个编译错误。以上循环是错误的吗?
在上面之后我有另一个for循环:
Loop:2
for (String ykl : yklList)
{
//do something
}
这引发了一个编译错误:
cannot find symbol
symbol : variable ykl
location: class test
for (String ykl : yklList)
据推测,Loop 1在某处出错了?
修改
“完整”代码如下所示:
for (int i=0;i<=yklList.size()-1;i++)
{
String[] ykl = yklList.get(i).split(" ");
}
for (String y : ykl)
{
t.add(y);
}
,错误是:
cannot find symbol
symbol : variable ykl
location: class test
for (String y : ykl)
答案 0 :(得分:4)
关于您的更新:
您在第一个循环中定义ykl
。所以变量不在第二个循环的范围内。您的代码必须如下所示:
for (String yklSentence : yklList) {
String[] ykl = yklSentence.split(" ");
for (String y : ykl) {
t.add(y);
}
}
顺便说一句:如果您使用像Eclipse这样的IDE,您会在编辑器中看到这些错误!
答案 1 :(得分:1)
在你的附录中,第二个循环不知道变量ykl,如前一个循环中所定义的,在离开之后 - 它被销毁。
如果没有删除变量 - 一段时间后所有可用的计算机内存都将被填满,这将导致程序错误。如果只给你机会dal不必要的变量 - 这允许你忘记删除不需要的变量和内存的情况,再次,将是满的。在这种情况下,Java简化了开发过程,无法考虑你的内容然后不会被删除。
纠正错误:
ArrayList <String> yklList = new ArrayList <String> ();
ArrayList <String> t = new ArrayList <String> ();
for (int i = 0; i <yklList.size (); i + +)
{
String [] ykl = yklList.get (i). Split ("");
for (String y: ykl)
t.add (y);
}
或: 如果你绝对填写yklList的所有字符t:
ArrayList<String> yklList = new ArrayList<String>();
ArrayList<String> t = new ArrayList<String>();
String[] ykl = new String[0];
for (int i=0;i<yklList.size();i++) {
String[] tempYkl = yklList.get(i).split(" ");
String[] tempYklDub = new String[tempYkl.length];
String[] tempYklDubDub = new String[ykl.length];
for (int z=0; z< tempYkl.length; z++)
tempYklDub[z] = tempYkl[z];
for (int z=0; z<ykl.length; z++)
tempYklDubDub[z]=ykl[z];
ykl = new String[tempYklDubDub.length+tempYklDub.length];
for (int z=0; z<tempYklDubDub.length; z++)
ykl[z]=tempYklDubDub[z];
for (int z=tempYklDubDub.length, k=0; k<tempYklDub.length; z++, k++)
ykl[z]=tempYklDub[k];
}
for (String y : ykl)
t.add(y);
答案 2 :(得分:0)
你应该确保循环正确的元素数。
尝试使用size()作为ArrayList:
for (int i=0;i<ykl.size();i++)
{
String[] ykl = yklList.get(i).split(" ");
}
请记住,每个周期都会覆盖您的ykl
数组。在循环之外定义它可以解决这个问题。
修改强> 尝试
String[] ykl = new String[ykl.size()];
for (int i=0;i<ykl.size();i++)
{
ykl[i] = yklList.get(i).split(" ");
}
for (String y : ykl)
{
t.add(y);
}
答案 3 :(得分:0)
如果我理解正确,你的yklList元素少于4个。 并且,在下一次迭代中,它尝试从yklList
之外获取一个元素问题的解决方案:
for (int i = 0; i <yklList.size(); i + +) {
String[] ykl = yklList.get(i).split(" ");
}
或
for (String yklListDub: yklList) {
String[] ykl = yklListDub.split(" ");
}
P.S。我很抱歉我的英语)