1

私はJavaに比較的慣れていないので、取引を支援するアプリケーションを作成しようとしています. 入力したcsvファイルを読み取る方法があります。これは、x行数と3列のテーブルです。多次元文字列配列 (String[][]) として読み込みます。

ペア----- 買い価格 --- 売り価格
AUDUSD 0.9550 --- 0.9386
EURUSD 1.3333 --- 1.3050
GBPUSD 1.5705 --- 1.5550

(私のフォーマットを許してください)

次のような ForexPair というコンストラクタがあります。

public class ForexPair extends PriceWarning{

public String pairName;
public double buyPrice;
public double sellPrice;

public ForexPair(String pair, String buy, String sell) {
    pairName = pair;
    buyPrice = Double.valueOf(buy);
    sellPrice = Double.valueOf(sell);
}

私の質問はこれです:「for」ループを使用して、CSV ファイルの各行のオブジェクトを作成できますか? これには ArrayList を使用できると思います。ただし、作成する各オブジェクトの名前を、csv ファイルの最初の列のペア名にしたいと考えています。例えば:

ForexPair AUDUSD = new ForexPair(pairNames[0], (myArray[0][1]),(myArray[0][2]));

しかし、for ループを使用して AUDUSD というオブジェクトを作成するにはどうすればよいでしょうか? 各オブジェクトに異なる名前を付けるには?

現在、私はこのコードを持っています:

public static void main(String[] args) {

    String[][] myArray = getInputArray();
    String[] pairNames = new String[myArray.length];

    for(int i = 0; i < pairNames.length; i++){
        pairNames[i] = myArray[i][0];                   //Creates 1D String array with pair names.
        ForexPair pairNames[i] = new ForexPair(pairNames[i], (myArray[i][1]),(myArray[i][2]));
    }
}
4

4 に答える 4

1

変数は関係ありません。コードがコンパイルされた後も追跡されません。名前をオブジェクトにマップしたい場合は、代わりにForexPairインスタンスをに配置できます。Map<String, ForexPair>

Map<String, ForexPair> map = new HashMap<String, ForexPair>();

...

// in the for-loop:
map.put(pairNames[i], new ForexPair(pairNames[i], myArray[i][1],myArray[i][2]));

これは少し冗長に思えますが、既に eachForexPairにフィールドとして名前があるため、このフィールドを削除して、マップを介してのみ名前を追跡することを検討することをお勧めします。

于 2013-06-14T13:53:52.407 に答える
0

1.

「for」ループを使用して、CSV ファイルの各行のオブジェクトを作成できますか?

はい、可能です:

BufferedReader br = new BufferedReader(new FileReader(yourCsvFile));
String line;
while((line = br.readLine()) != null) {
     // do something with line.
}

2.

しかし、for ループを使用して AUDUSD というオブジェクトを作成するにはどうすればよいでしょうか? 各オブジェクトに異なる名前を付けるには?

変数の名前とペアと呼ばれる変数の値という2つの異なる概念を混同していると思いますが、変数 の値は重要なポイントですが、変数の名前はコードの品質のみを提供します!

于 2013-06-14T13:58:56.377 に答える
0

はい、できます。を使用しHashMapます。
大まかな例:

HashMap<String, ForexPair> myMap = new HashMap<String, ForexPair>();
myMap.put("AUDUSD", new ForexPair(pairNames[0], (myArray[0][1]),(myArray[0][2])));
ForexPair pair = myMap.get("AUDUSD");
于 2013-06-14T13:54:01.453 に答える
0
            final TableLayout tview = (TableLayout) findViewById(R.id.tblGridStructure);
            final JSONArray JarraymenuItems = {item1,it3m1mwer,wer,ds};//your list of items
            for (int i = 0; i < JarraymenuItems.length(); i++) 
                        {
    ableRow tr = new TableRow(this);
        tr.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
                            tview.addView(tr, LayoutParams.FILL_PARENT, 45);
            T
            final TextView etprice = new TextView(this);
            etprice.setText("your text value wat u want to display");
tr.addView(etprice );
int count = tview.getChildCount();
                    if (count % 2 != 0)
                    tr.setBackgroundColor(Color.parseColor("#E3E3E3"));
            }
于 2013-06-14T14:03:33.733 に答える