当前位置: 代码迷 >> J2SE >> 为什么数值出现了偏差?该如何处理
  详细解决方案

为什么数值出现了偏差?该如何处理

热度:41   发布时间:2016-04-24 01:17:27.0
为什么数值出现了偏差?
原题为:用户登录系统时需要输入用户名和密码,系统对用户输入的用户名和密码进行验证。验证最多三次,超过三次则程序结束。根据验证结果的不同<strong>(信息匹配/信息不匹配/三次都不匹配)</strong>,执行不同的操作,假设正确的用户名和密码分别为:Jim和123456.
下面是分别用while,do-while,for循环写出来的源代码(我自认为的解释可能因循环结构不同,因此i的数值出现了偏差)【下面的代码能正常运行,但每个结构里面i的值会有偏差,各位高手,真的是因为循环结构不同,而数值出现了偏差,还是?】:
Java code
import java.util.*;public class P137_3{public static void main (String[]args){Scanner input = new Scanner(System.in);String id ;//录入IDint press;//录入密码for ( int i = 2; i&gt;=0; i-- ){//定义表达式System.out.println("请输入用户名(for循环):");id = input.next();//录入用户名System.out.println("请输入密码:");press = input.nextInt();//录入密码if ("Jim".equals(id) &amp;&amp; press == 123456 ){//若输入正确,提示欢迎,并退出循环System.out.println("欢迎登录Shopping系统!");break;}else if ( !"Jim".equals(id) || press != 123456 ) {//录入错误,则提示错误,并提示剩余次数System.out.println("输入错误!您还有"+i+"次输入机会!");if ( i==0 ){//当i等于0时,提示3次输入均出错,并结束循环System.out.println("******************");System.out.println("对不起,您3次均输入错误!");}continue;}}System.out.println("***********while循环开始*******");int i = 3;while ( i&gt;0 ){System.out.println("请输入用户名(while循环):");id = input.next();//录入用户名System.out.println("请输入密码:");press = input.nextInt();//录入密码if ("Jim".equals(id) &amp;&amp; press == 123456 ){//若输入正确,提示欢迎,并退出循环System.out.println("欢迎登录Shopping系统!");break;}else if ( !"Jim".equals(id) || press != 123456 ) {//录入错误,则提示错误,并提示剩余次数i = i-1;System.out.println("输入错误!您还有"+i+"次输入机会!");if ( i==0 ){//当i等于0时,提示3次输入均出错,并结束循环System.out.println("******************");System.out.println("对不起,您3次均输入错误!");}continue;}i--;}System.out.println("***********do-while循环开始*******");do{System.out.println("请输入用户名(do-while循环):");id = input.next();//录入用户名System.out.println("请输入密码:");press = input.nextInt();//录入密码if ("Jim".equals(id) &amp;&amp; press == 123456 ){//若输入正确,提示欢迎,并退出循环System.out.println("欢迎登录Shopping系统!");break;}else if ( !"Jim".equals(id) || press != 123456 ) {//录入错误,则提示错误,并提示剩余次数i = i-1;System.out.println("输入错误!您还有"+i+"次输入机会!");if ( i==0 ){//当i等于0时,提示3次输入均出错,并结束循环System.out.println("******************");System.out.println("对不起,您3次均输入错误!");}continue;}} while ( i &lt;= 3 &amp;&amp; i&gt;0 );}}


------解决方案--------------------
循环3次
(int i = 0;i< 3;i++){

}
int i = 0

while(i<3){
i++
}
int i = 0;

do{
i++
}while(i<=3);
  相关解决方案