首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

是不是不能进行静态调用?解决方法

2012-05-31 
是不是不能进行静态调用?代码里面的红色部分是不是可以删掉?因为在属性里面定义了静态,导致了在主方法里面

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

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

假如定义一个静态数组,是不是每次都只能调用到下标为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("错误!");        }    }} 

热点排行
Bad Request.