2017-01-16 2 views
0

私はテキストベースのゲームで、シャドウランのデッキをシミュレートするコマンドプロンプトを使い果たしています。理想的には、プレイヤーはすべてのキャラクターの関連情報を含むCSVファイル(65行、2列)を持つことができ、その情報はプログラムにアップロードできる必要があります。CSVファイルの整数を使用して対応する整数を初期化する

私は、csvファイルが正しくロードされていて、ループ内にある間はすべて正しく表示されています。私の人生では、ループから値を取り出す方法や、さまざまな文字の統計値を設定するために使用できるものを理解することはできません。次のように私のコードのスニペットは、次のとおりです。

public class Program { 
static int[][] Character = new int[65][2]; 

public static void main (String[]args) { 
    Scanner user_input = new Scanner(System.in); 
    String DeckerName; 
    System.out.println("What is your name? (Name of your .csv file)"); //Load Decker character 
    DeckerName = user_input.nextLine(); 
    System.out.println("Alright, " + DeckerName + ". Jacking into the Matrix now..."); 

    String csvFile = "FILE LOCATION"; 
    BufferedReader br = null; 
    String line = ""; 
    String cvsSplitBy = ","; 
    Scanner loader = new Scanner(System.in); 

//Opens and loads .csv file into an array  
    try { 
    br = new BufferedReader(new FileReader(csvFile)); 
    while ((line = br.readLine()) != null) { 
    String characterload[] = line.split(cvsSplitBy); 
    System.out.println ("" + characterload[0] + ": " + characterload[1]); // for testing purposes, characterload[0] is a text description, characterload[1] is an integer 
    int intDeckerProgram = Integer.parseInt(characterload[1]); 
    System.out.println(intDeckerProgram); //for testing purposes 
    for (int i = 0; i < characterload.length; i++) 
    { 
     Character[i][1] = intDeckerProgram; 
     System.out.println(Character[i][1]); //for testing purposes 
    } 
    } 
    } catch (FileNotFoundException e) { 
    e.printStackTrace(); 
    } catch (IOException e) { 
    e.printStackTrace(); 
    } finally { 
    if (br!= null) { 
     try { 
     br.close(); 
     } catch (IOException e) { 
    e.printStackTrace(); 
     } 
    } 
    } 

    int DeckerDetectionFactor = Character[0][1]; 
    System.out.println(Character[0][1]); //for testing purposes 
    System.out.println(DeckerDetectionFactor); //for testing purposes 
    int DeckerHackingPool = Character[1][1]; 
    System.out.println(Character[1][1]); //for testing purposes 
    System.out.println(DeckerHackingPool); //for testing purposes 

TL; DR他のJavaパッケージをダウンロードせずに、どのように私はcharacterload配列にインポート値を持って、そして私の整数が適切に初期化されるように、文字配列にそれらを置くことができます?あなたの時間をありがとう、私は本当にそれを感謝します!

編集:下部の2つの値、DeckerDetectionFactorとDeckerHackingPoolは、それぞれ6と9である必要があります(この情報はCSVファイルから取得されています)。私はこれらの値がCharacter [] []配列に適切にロードされるようにする方法を少し指摘していますので、変数は0にするのではなく、正しく初期化されます。

+0

あなたのコードはあなたが望むようにしているようですので、間違いがありますか? –

+0

最も厳密な意味でのエラーではありませんが、下部のDeckerDetectionFactorとDeckerHackingPoolの2つの値は、それぞれ(CSVから)6と9である必要があります。私のコードを書いたように、0の値が返されてしまいます。私は、Character [] []がループの外にある必要がある値であることを確実にする方法を少し指摘していると思います。 – Aldanius

+3

これは、作業コードのレビューを依頼しており、http://codereview.stackexchange.comに属しているので、この質問をオフトピックとして締結することに投票しています。 –

答えて

0

内側のForループをWhileループから削除します。行全体の整数を設定して、それをインクリメントし、問題全体を解決しました。それが誰にも役立つ場合は、ここに私が今使っているコードがあります:

... 
    br = new BufferedReader(new FileReader(csvFile)); 
    int row = 0; 
    while ((line = br.readLine()) != null) { 
    String characterload[] = line.split(cvsSplitBy); 
    int intDeckerProgram = Integer.parseInt(characterload[1]); 
     Character[row][1] = intDeckerProgram; 
     row++; 
    } 
... 
関連する問題