代码里面的红色部分是不是可以删掉?因为在属性里面定义了静态,导致了在主方法里面调用老是出错,静态是:只能调用一次的意思吗?假如定义一个静态数组,是不是每次都只能调用到下标为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("错误!");
}
}
}
show()方法和onshow()方法都不应有参数,应该删掉
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("错误!");
}
}
}
public static String show (String msg){ //录入用户名
System.out.println(msg);
String data = sc.next();
return data;
}修正错误
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关键字不要乱使用,它用来声明变量表示的是类的属性,是全局唯一的,所有对象都相同,而姓名跟密码应该是每个对象都不同的,