日期:2014-05-20  浏览次数:20682 次

小弟新手 ,求高手帮助
那位大哥大姐帮小弟看看下面的代码,好像只对了一半,请给小弟改改.
import java.util.Scanner;

public class dengru {
public static void main(String[] ages) {
Scanner pout = new Scanner(System.in);
String name = "afh";
int mima = 123456;
int cishu = 3;
for (int i = 0; i < 3; i++) {
System.out.print("请输入用户名:");
String name2 = pout.next();
System.out.print("请输入密码:");
int mima2 = pout.nextInt();
if (name2 == name || mima2 == mima) {
System.out.print("欢迎登录MyShopping系统!");
break;
}
else if (name2 != name || mima2 != mima) {
cishu = cishu - 1;
System.out.println("输入错误!你还有" + cishu + "次机会\n");
continue;

}

}
System.out.print("对不起,你3次都输入错误!");
}
}

------解决方案--------------------
一眼看过去,比较大的问题是:
if (name2 == name || mima2 == mima) 
字符串比较应该用 equals():
if (name2.equals(name) || mima2 == mima)


另外,else if 其实多余,改成 else 就行了。


最后,密码用数字,这个比较怪异。
------解决方案--------------------
帮你改了试试 String类型的数据判断他们的值是否相等是不能用==号的。要调用equals()函数,还有用户跟密码要同时满足才能等入的所有要用&&号连接。

Java code
import java.util.Scanner;

public class dengru
{
    public static void main(String[] ages)
    {
        Scanner pout = new Scanner(System.in);
        String name = "afh";
        int mima = 123456;
        int cishu = 3;
        for (int i = 0; i < 3; i++)
        {
            System.out.print("请输入用户名:");
            String name2 = pout.next();
            System.out.print("请输入密码:");
            int mima2 = pout.nextInt();
            if (name.equals(name2) && mima2 == mima)
            {
                System.out.print("欢迎登录MyShopping系统!");
                break;
            }
            else if (name2 != name || mima2 != mima)
            {
                cishu = cishu - 1;
                System.out.println("输入错误!你还有" + cishu + "次机会\n");
                continue;

            }
            System.out.print("对不起,你3次都输入错误!");
        }
        
    }
}