代码里面的红色部分是不是可以删掉?因为在属性里面定义了静态,导致了在主方法里面调用老是出错,静态是:只能调用一次的意思吗?假如定义一个静态数组,是不是每次都只能调用到下标为0的值呢?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 (String name){ //录入用户名
System.out.println("请输入用户名:");
name = sc.next();
return name ;
}

public String oneshow (String pre){ //录入密码
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("错误!");
}
}
}

解决方案 »

  1.   

    静态不是只能调用一次,而是该类的所有对象共享同一个值
    show()方法和onshow()方法都不应有参数,应该删掉
      

  2.   

    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,容易并发。静态属性属于类的,不属于实例。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("错误!");
            }
        }
    }
      

  3.   


        public static String show (String msg){ //录入用户名
            System.out.println(msg);
            String data = sc.next();
            return  data;
        }修正错误
      

  4.   


    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("错误!");
    }
    }
    }
    static关键字不要乱使用,它用来声明变量表示的是类的属性,是全局唯一的,所有对象都相同,而姓名跟密码应该是每个对象都不同的,