关于JAVA中do while循环的一个小问题

import java.util.Scanner;
public class Email
{
public static void main(String[] args)
{
Scanner input=new Scanner(System.in);
String ans="y";
System.out.print("请输入邮箱地址:");
do
{
String email=input.next();
if(email.indexOf('@')!=-1 && email.indexOf('@')!=0 && email.indexOf('.')>email.indexOf('@') && email.indexOf('@')==email.lastIndexOf('@'))
{System.out.println("你的邮箱地址有效");

}
else
{
System.out.print("无效的邮箱地址,请重新输入: ");
ans=input.next();
}
System.out.println("是否继续(y/n)");
ans=input.next().toLowerCase();
if(ans.equals("n"))
break;
else
continue;

}
while(ans.equalsIgnoreCase("y"));

}

}
这个代码写完在运行时候我发现一个逻辑问题,但是我自己却找不出来应该怎么改。运行的结果如下:
请输入邮箱地址:dasdsdasda
无效的邮箱地址,请重新输入: daddasda
是否继续(y/n)
在第二次重新输入邮箱地址时候根本不会去IF判断里面找而是直接输入下面的内容。请问这个要怎么改才能在第二次输入错了的时候提示输入错误请重新输入。请高手帮忙改下。

第1个回答  2010-07-09
while(ans.equalsIgnoreCase("y"));
ans=input.next().toLowerCase(); 加上这句

}
如果用户按n,就跳出循环,如果按y,就继续下一次循环

这里要注意break和continue的含义

break 是跳出整个循环
continue是跳过循环体剩余的语句,继续下一次循环

这点弄懂了,就没问题了 ,希望对你有所帮助,谢谢!
第2个回答  2010-07-09
else {
System.out.print("无效的邮箱地址,请重新输入: ");
continue;
}

参考资料:还有其他问题的话,给我发百度消息

本回答被提问者采纳
第3个回答  2010-07-20
第二次输入邮箱地址,没有判断,就输出:是否继续了,只要在
else
{
System.out.print("无效的邮箱地址,请重新输入: ");
ans=input.next();
//再重新写一遍判断就行了
}
相似回答
大家正在搜