Java新人,实在不知以下代码何处不对

qq_3126433 2015-10-18 01:41:25
事情是这样下面这两段代码运行的结果应该是一样的,但是实则不同,比较费解。

package quiz2;
import java.util.*;
public class Strings {
void importantMethods(){
ArrayList<String> al=new ArrayList<String>();
al.add("equalsIgnoreCase()");
al.add("toUpperCase()");
al.add("toLowerCase()");
al.add("concat()");
al.add("length()");
al.add("charAt()");
al.add("replace()");
al.add("toString()");
al.add("trim()");
al.add("substring()");
System.out.println("String一共有"+al.size()+"个方法需要记住,请默写");
Scanner in=new Scanner(System.in);
for(int i=0;i<al.size();i++){
if(i==al.size()-1){
andyloop:while(true){
String typeIn2=in.next();
if(al.contains(typeIn2)){
while(true){
System.out.println(typeIn2+"是String需要记住的方法之一");
System.out.println("恭喜你已经答出了所有String需要的方法");
break andyloop;
}
}
else{
while(true){
System.out.println(typeIn2+"不是String需要记住的方法之一");
System.out.println("请仔细思考后重新输入");
continue andyloop;
}
}
}
}
outer:while(true){
String typeIn1=in.next();
if(al.contains(typeIn1)){
System.out.println(typeIn1+"是String需要记住的方法之一");
System.out.println("还有"+(al.size()-1)+"个方法,请继续");
al.remove(typeIn1);
break outer;
}
else{
System.out.println(typeIn1+"不是String需要记住的方法之一");
System.out.println("请仔细思考后重新输入");
continue outer;
}
}
}
}
}

运行到
String一共有10个方法需要记住,请默写
toString()
toString()是String需要记住的方法之一
还有9个方法,请继续
trim()
trim()是String需要记住的方法之一
还有8个方法,请继续
substring()
substring()是String需要记住的方法之一
还有7个方法,请继续
concat()
concat()是String需要记住的方法之一
还有6个方法,请继续
replace()
replace()是String需要记住的方法之一
还有5个方法,请继续

就结束了
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------
但是我把代码改一下

package quiz2;
import java.util.*;
public class Strings {
void importantMethods(){
ArrayList<String> al=new ArrayList<String>();
al.add("equalsIgnoreCase()");
al.add("toUpperCase()");
al.add("toLowerCase()");
al.add("concat()");
al.add("length()");
al.add("charAt()");
al.add("replace()");
al.add("toString()");
al.add("trim()");
al.add("substring()");
System.out.println("String一共有"+al.size()+"个方法需要记住,请默写");
Scanner in=new Scanner(System.in);
for(int i=0;i<10;i++){
if(i==9){
andyloop:while(true){
String typeIn2=in.next();
if(al.contains(typeIn2)){
while(true){
System.out.println(typeIn2+"是String需要记住的方法之一");
System.out.println("恭喜你已经答出了所有String需要的方法");
break andyloop;
}
}
else{
while(true){
System.out.println(typeIn2+"不是String需要记住的方法之一");
System.out.println("请仔细思考后重新输入");
continue andyloop;
}
}
}
}
outer:while(true){
String typeIn1=in.next();
if(al.contains(typeIn1)){
System.out.println(typeIn1+"是String需要记住的方法之一");
System.out.println("还有"+(al.size()-1)+"个方法,请继续");
al.remove(typeIn1);
break outer;
}
else{
System.out.println(typeIn1+"不是String需要记住的方法之一");
System.out.println("请仔细思考后重新输入");
continue outer;
}
}
}
}
}


结果就完全不一样了
String一共有10个方法需要记住,请默写
toString()
toString()是String需要记住的方法之一
还有9个方法,请继续
concat()
concat()是String需要记住的方法之一
还有8个方法,请继续
length()
length()是String需要记住的方法之一
还有7个方法,请继续
trim()
trim()是String需要记住的方法之一
还有6个方法,请继续
replace()
replace()是String需要记住的方法之一
还有5个方法,请继续
substring()
substring()是String需要记住的方法之一
还有4个方法,请继续
charAt()
charAt()是String需要记住的方法之一
还有3个方法,请继续
toUpperCase()
toUpperCase()是String需要记住的方法之一
还有2个方法,请继续
toLowerCase()
toLowerCase()是String需要记住的方法之一
还有1个方法,请继续
equalsIgnoreCase()
equalsIgnoreCase()是String需要记住的方法之一
恭喜你已经答出了所有String需要的方法
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------
按照我自己的理解,这两段代码结果应该是一样的。
两段代码唯一的不同之处以用黄色字体标出。
还请大神赐教,多谢
...全文
98 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_3126433 2015-10-18
  • 打赏
  • 举报
回复
引用 2 楼 imfang 的回复:
你的第43行一直在al.remove(typeIn1); 会造成al.size()发生改变~~~自然程序就会出错了。
了解了,多谢大神!
imfang 2015-10-18
  • 打赏
  • 举报
回复
你的第43行一直在al.remove(typeIn1); 会造成al.size()发生改变~~~自然程序就会出错了。
qq_3126433 2015-10-18
  • 打赏
  • 举报
回复
额。。。发帖的时候选了java code。。。这样颜色的编辑就无效了。。。两段代码不同地方就是在for循环那里(还有换颜色的代码在那)

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧