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