0

コンソールでプレイする単純な Mastermind ゲームを作成しているので、私のタスクには、「start 4 5 34356」のように sth と入力してゲームを開始することが含まれます。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();
    }
}
4

2 に答える 2

0

このメソッド: 次public static void splitArray(){のような文字列配列を返す必要があります:

public static String[] splitArray(){

    ...your code
    return inputArray
}

次に、メインメソッドで:

String[] inputArray = splitArray();

stringParts 変数は、入力の配列を保持します。その後、配列で必要なことを行うことができます

個々の変数を定義する必要がある場合は、次のようにすることができます。

int numPossibleTried = Integer.parseInt(inputArray[1]);
于 2013-01-26T11:25:15.350 に答える
0

入力パラメーターの数とタイプが確実にわかっている場合は、分割の代わりにスキャナーを使用することをお勧めします。

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() を確認したい場合もあります。

http://docs.oracle.com/javase/7/docs/api/java/util/Scanner.html 1

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);
        }
}
于 2013-01-26T11:32:02.307 に答える