如何在java中多次“设置”一个int / String值?

时间:2014-01-25 04:14:55

标签: java

当我说设定值时,我不是说

int a = 10; 要么 字符串b =“你好”;

下面是试图开始工作的代码:

import java.util.Scanner;

public class Main {

    private static String Password;

    public static void main(String[] args){
        while(true){
        Scanner scanner = new Scanner(System.in);
        String input = scanner.nextLine();

        String[] split = input.split(" ");
        String split1 = split[0];
        String split2 = split[1];
        String split3 = split[2];



        if(split1.equals("New")){
            if(split2.equals("Password:")){
                Password = split3;
                System.out.println("Password set to " + Password);
            }
        }
        if(split2.equals("")){
            if(split3.equals("")){
                if(split1.equals(Password)){
                    System.out.println("Access Granted");
                    }
                }
            }
        }
    }
}

我不能“设置”密码为123或abc。我想知道如何才能做到这一点。

编辑:@dfeuerit确实与密码申请密码相关,我正在制作密码申请。

我希望用户能够通过在控制台中输入“New Password:123”来设置密码,然后当他们输入密码“123”时,它会显示“Access Granted”

3 个答案:

答案 0 :(得分:1)

您的问题可能是您并不总是有3个参数。

New Password: mypass

工作得很好。您可能想要的下一件事就是输入

mypass

然后你的程序应该说Access Granted但是这不起作用,因为mypass只有一个单词,当你通过input.split(" ")分割它时(它会在每个空格字符处拆分输入) )你会得到ArrayIndexOutOfBoundsException。尝试通过插入类似if (split.length >= 3)的内容来处理此问题。

答案 1 :(得分:0)

这里的代码就是问题:

String[] split = input.split(" ");
String split1 = split[0];
String split2 = split[1];
String split3 = split[2];

分割输入不一定是3个部分。根据您的需要,第二次输入密码以获得访问权限时,它只会在一个部分中。

所以(这是非常硬编码的代码),您可以测试是否有三个部分来设置字符串。否则,检查是否只有一个部件(他们输入密码进行访问)。确保事先初始化字符串,以便它们始终具有值。将上面的代码更改为:

String split1 = "", split2 = "", split3 = "";
if (split.length == 3) {
    split1 = split[0];
    split2 = split[1];
    split3 = split[2];
} else if (split.length == 1) {
    split1 = split[0];
}

样品试用:

New Password: 123
Password set to 123
123
Access Granted

一个公平的警告,这段代码非常具体,只有在他们完全按照您的预期输入的情况下才能使用(完美的标点符号和大写字母等)。

答案 2 :(得分:0)

我的代码可以实现您的要求。

package com.test;

import java.util.Scanner;

public class InputPassword {
private static String password = "";

public static void main(String[] args) {
    // TODO Auto-generated method stub
    while (true) {
        Scanner scanner = new Scanner(System.in);
        String input = scanner.nextLine();
        String[] split = input.split(" ");
        if (split.length == 3) {
            if ("New".equals(split[0]) && "Password:".equals(split[1])) {
                password = split[2];
                System.out.println("Password set to " + password);
            }
        } else if (split.length == 1) {
            if ("quit".equals(split[0])) {
                System.exit(0);
            } else {
                if (password.equals(split[0])) {
                    System.out.println("Access Granted");
                }
            }
        }
    }
}

}