【发布时间】:2015-12-18 00:46:42
【问题描述】:
我要解决的问题是:http://codingbat.com/prob/p128270
给定 2 个任意长度的 int 数组 a 和 b,返回一个新数组,其中包含每个数组的第一个元素。如果任一数组的长度为 0,则忽略该数组。
front11({1, 2, 3}, {7, 9, 8}) → {1, 7}
front11({1}, {2}) → {1, 2}
front11({1, 7}, {}) → {1}
到目前为止我的代码:
public int[] front11(int[] a, int[] b) {
int answerindexs = 2;
if(a.length == 0 || b.length == 0)
answerindexs = 1;
if(a.length == 0 && b.length == 0)
answerindexs = 0;
int[] answer = new int[answerindexs];
for (int x = 0; x <= 1; x++){
if(a.length > 0 && x == 0)
answer[0] = a[0];
else if(b.length > 0 && x == 1)
answer[1] = b[0];
}
return answer;
}
我一直在尝试自己做的这个问题让我感到压力很大,因为我尝试做 java 的每一次尝试都不像我想象的那样工作。 我唯一没有通过的测试是;
front11({}, {2, 8}) → {2}
因为我得到一个索引超出范围的错误,并且我在尝试解决这个特定测试时遇到了麻烦。因为我不确定如何检查我的答案数组中是否已经有一个元素,因为 answer.length 始终为 2,尽管它在每个索引中都没有分配元素,因为它默认为零。
感谢任何帮助,如果有人可以在一开始改进我的两个 if 语句(它适用于小数字,但我知道当它得到更大的数字时,我无法编写这样的代码)。我想使用 ArrayList 来回答这个问题,因为我可以只使用 .add(),但是这个问题指定了一个数组,这很烦人要找出要预设多少个插槽。
【问题讨论】: