Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用分隔符拆分字符串并保留值_Java_String - Fatal编程技术网

Java 使用分隔符拆分字符串并保留值

Java 使用分隔符拆分字符串并保留值,java,string,Java,String,由于我正在制作一个简单的智囊团游戏,它将在控制台中进行,我的任务包括在游戏开始时输入以下内容:“start 4 5 34356”。其中start初始化游戏,4是可能尝试猜测的次数,5是要猜测的代码长度,34356是代码本身。我用分隔符拆分了字符串,但是如何将其每个值保存到一个变量中,以便以后使用它们呢?这是我的密码: import java.util.Arrays; public class ManualNumberGenerator { public static String i

由于我正在制作一个简单的智囊团游戏,它将在控制台中进行,我的任务包括在游戏开始时输入以下内容:“start 4 5 34356”。其中start初始化游戏,4是可能尝试猜测的次数,5是要猜测的代码长度,34356是代码本身。我用分隔符拆分了字符串,但是如何将其每个值保存到一个变量中,以便以后使用它们呢?这是我的密码:

import java.util.Arrays;

public class ManualNumberGenerator {

    public static String input;
    public static String[] inputArray;

    public static void splitArray() {

        input = Terminal.askString("Enter some values: ");

        inputArray = input.split("DELIMITER");

        String code = Arrays.toString(inputArray);
        System.out.println(code);
    }

    public static void main(String[] args) {
        splitArray();
    }
}

此方法:
public static void splitArray(){
需要返回如下字符串数组:

public static String[] splitArray(){

    ...your code
    return inputArray
}
然后在您的主要方法中:

String[] inputArray = splitArray();
stringParts变量将保存输入数组。然后,您可以对该数组执行任何操作

如果需要定义单个变量,可以执行以下操作:

int numPossibleTried = Integer.parseInt(inputArray[1]);

如果您确实知道输入参数的数量和类型,您可能希望使用Scanner而不是split

Scanner sc = new Scanner(inputString);
String param1 = sc.next(); // start
int param2 = sc.nextInt(); // 4
int param3 = sc.nextInt(); // 5
int param3 = sc.nextInt(); // 34356
当然,在调用sc.next()之前,您可能需要先检查字符串的实际数量,甚至检查sc.hasNext()

在回答NPE的评论时,也许你忘了申报一些东西

import java.util.Scanner;

public class ScanEx {
        public static void main(String[] args) {
                String str = "start 1 2 123455";
                Scanner sc = new Scanner(str);
                String param1 = sc.next();
                int param2 = sc.nextInt();
                int param3 = sc.nextInt();
                int param4 = sc.nextInt();
                System.out.println(param1 + "\t" + param2 + "\t" + param3 + "\t" + param4);
        }
}

拆分字符串已经为您提供了一个数组。为什么要使用单个变量?因为我以后必须单独使用它们。如果它们由单个变量保存,效果会更好。我将您的代码放在一个方法holdVars()中,将参数改为command、Trys、codelength和code,并添加此“System.out.println”(命令+尝试+代码+代码长度);”,然后我在main中调用了它,但它给了我一个NullPointerException和一些其他错误。是的,我知道了,但是正如你所说,如果我每次都要以不同的方式声明值,这样字符串str就不是常量,那我该如何更改代码呢?很抱歉问了这些愚蠢的问题。我更改了:String str=“start 1 2 123455”;扫描仪sc=新扫描仪(str);to扫描仪sc=新扫描仪(System.in);