我对Java相对较新,并试图创建一个应用程序来帮助我的交易。我有一个方法来读取我输入的csv文件,该文件是x行数和3列的表。它将其读作多维String数组(String [] [])例如
配对-----买入价---卖出价格
澳元兑美元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文件的第一列中的Pair Name。例如:
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]));
}
}
答案 0 :(得分:0)
变量名称无关紧要 - 编译代码后甚至无法跟踪它们。如果要将名称映射到对象,可以将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]));
虽然这似乎有点多余,但由于您已在每个ForexPair
中将该名称作为字段,因此您可能需要考虑删除此字段并仅通过地图跟踪名称。
答案 1 :(得分: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");
答案 2 :(得分: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的对象?这样每个对象都有不同的名字?
我认为你混淆了两个不同的概念:变量名称和变量值称为对 变量的值是重要的一点,而变量的名称只提供代码质量!
答案 3 :(得分: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"));
}