所以,我在C ++中轻松完成了一个项目,只是意识到我应该用Java编写它。这不会太大,除了我的代码使用多维向量,如:
vector <vector<int> > arr
Java中是否有相同的结果可以提供相同的结果,而不必大幅重写程序?
以下是我在翻译时遇到问题的C ++程序的代码片段:
vector <vector <int> > arr;
cin >> n;
while (n > 0)
{
vector <int> row;
int u;
for (int i = 0; i < n ; ++i)
{
cin >> u;
row.push_back(u);
}
arr.push_back(row);
n = comb(row.size(), k);
k++;
}
for (int i = 0; i < arr.size(); i+=2)
for (int j = 0; j < arr[i].size(); ++j)
sum += arr[i][j];
for (int i = 1; i < arr.size(); i+=2)
for (int j = 0; j < arr[i].size(); ++j)
diff += arr[i][j];
答案 0 :(得分:3)
ArrayList
如果您将其声明为ArrayList<ArrayList<Integer>>
,则应提供所需的功能。您拨打push_back()
的电话相当于拨打add()
。您将丢失数组索引访问符号,但可以通过将调用链接到get()
来解决此问题。
答案 1 :(得分:3)
你可以使用ArrayList来调整你的代码。这是一个小例子。
ArrayList <ArrayList<Integer>> aa = new ArrayList<ArrayList<Integer>>();
aa.add(new ArrayList<Integer>());
aa.get(0).add(10);
修改
你的代码看起来像这样
ArrayList <ArrayList<Integer>> arr = new ArrayList<ArrayList<Integer>>();
BufferedReader br = new BufferedReader (new InputStreamReader(System.in));
int n;
n=br.read();
while (n>0)
{
ArrayList<Integer> row = new ArrayList<Integer>();
int u;
for (int i=0;i<n;i++)
{
u=br.read();
row.add(u);
}
arr.add(row);
//I don't know this function
n=com(row.size(),k);
k++;
}
for (int i=0;i<arr.size();i+=2)
for (int j=0;j<arr.get(i).size())
sum+=arr.get(i).get(j);
答案 2 :(得分:2)
Java也有多维向量。只需使用
ArrayList<ArrayList<Integer>>arr=new ArrayList();