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

是不是不能进行静态调用?

代码里面的红色部分是不是可以删掉?因为在属性里面定义了静态,导致了在主方法里面调用老是出错,静态是:只能调用一次的意思吗?

假如定义一个静态数组,是不是每次都只能调用到下标为0的值呢?

Java code


package cn.puruidong.accp_15;

/**
 * @author PuRuidong
 *
 */
/*
 * 输入用户名及密码,在验证的时候,忽略大小写
 */
import java.util.Scanner;
public class Test1 {
    private static String name ; //名字
    private static String pre ; //密码
    private static Scanner sc = new Scanner (System.in);
    
    public String show ([b][color=#FF0000]String name[/color][/b]){ //录入用户名
        System.out.println("请输入用户名:");
        name = sc.next();
        return name ;
    }
    
    public String oneshow ([b][color=#FF0000]String pre[/color][/b]){ //录入密码
            System.out.println("请输入密码:");
            pre = sc.next();
        return pre ;
    }

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Test1 center = new Test1 ();
        String name1; //定义第二次录入的名字
        String pre1; //定义第二次录入的密码
        center.show();//调用输入用户名
        center.oneshow(); //调用输入密码
        System.out.println("请再次输入用户名:");
        name1 = sc.next(); //验证用户名
        System.out.println("请再次输入密码:");
        pre1 = sc.next(); //验证密码
        if (pre1.length()<3){ //密码长度小于3时,退出程序
            System.out.println("录入错误,退出程序!");
            System.exit(0);
        }
        if ((name1.equalsIgnoreCase(name))&&(pre1.equalsIgnoreCase(pre))){//忽略大小写,当两值相等输出正确
            System.out.println("************************");
            System.out.println("正确!");
        }else {
            System.out.println("************************");
            System.out.println("错误!");
        }
    }
}








------解决方案--------------------
public String show (String name){ //录入用户名
System.out.println("请输入用户名:");
name = sc.next();
return name ;
}

public String oneshow (String pre){ //录入密码
System.out.println("请输入密码:");
pre = sc.next();
return pre ;
}
楼主有几个误区,你这么值根本传不到 name 和pre 里面去。引用传递问题。
除非
name = center.show();
pre = center.onshow();
其次不推荐用这样用static,容易并发。静态属性属于类的,不属于实例。
Java code

import java.util.Scanner;
public class Test{
    
    private static Scanner sc = new Scanner (System.in);
    
    public static String show (String msg){ //录入用户名
        System.out.println("请输入用户名:");
        String data = sc.next();
        return  data;
    }

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        String name1; //定义第二次录入的名字
        String pre1; //定义第二次录入的密码
        String name = Test.show("请输入用户名:");//调用输入用户名
        String pre = Test.show("请输入密码:"); //调用输入密码
        name1 = Test.show("请再输入用户名:");//验证用户名
        pre1 = Test.show("请再次输入密码:");//验证密码
        if (pre1.length()<3){ //密码长度小于3时,退出程序
            System.out.println("录入错误,退出程序!");
            System.exit(0);
        }
        if ((name1.equalsIgnoreCase(name))&&(pre1.equalsIgnoreCase(pre))){//忽略大小写,当两值相等输出正确
            System.out.println("************************");
            System.out.println("正确!");
        }else {
            System.out.println("************************");
            System.out.println("错误!");
        }
    }
}

------解决方案--------------------
Java code

public class Test1 {
    private String name; // 名字
    private String pre; // 密码

    public void show(String name) { // 录入用户名
        this.name = name;
    }

    public void oneshow(String pre) { // 录入密码
        this.pre = pre;
    }

    /**
     * @param args
     */
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        Test1 center = new Test1();
        System.out.println("请输入用户名:");
        String name = sc.next();
        System.out.println("请输入密码:");
        String pre = sc.next();
        center.show(name);
        center.oneshow(pre);
        System.out.println("请再次输入用户名:");
        String name1 = sc.next(); // 验证用户名
        System.out.println("请再次输入密码:");
        String pre1 = sc.next(); // 验证密码
        if (pre1.length() < 3) { // 密码长度小于3时,退出程序
            System.out.println("录入错误,退出程序!");
            System.exit(0);
        }
        if ((name1.equalsIgnoreCase(name)) && (pre1.equalsIgnoreCase(pre))) {// 忽略大小写,当两值相等输出正确
            System.out.println("************************");
            System.out.println("正确!");
        } else {
            System.out.println("************************");
            System.out.println("错误!");
        }
    }
}