我自己一直在研究Java几周,但我已经完全陷入了我在网上找到的一个挑战问题。我一直在搜索谷歌,看看有没有人问过它,但我似乎找不到任何东西。由于我没有任何老师,我想知道StackOverflow上是否有人可以帮助我。
我的一个方法存在问题,因为它一直使我的测试用例失败,而且我不确定究竟是什么导致它出错。
基本上,如果我输入像[2,8,3,9,7]这样的数组,我希望它像[2,3,7,8,9]那样输出。然而,由于这里编写的方法写得不好,我一直在开始时得到额外的元素,这导致[2,2,3,7,8,9]。我使用此方法的具体目标是查找并返回一个数组,其中包含大于/等于" high"小于/等于"低" ,包括重复。此数组的长度应与'范围'中的元素数相同,因此方法名称。
我只是想正确地指向我应该采取的下一步,以消除这个第一个元素问题。我知道代码可能很糟糕,所以请耐心等待。
谢谢;所有的帮助表示赞赏!
auth.createUserWithEmailAndPassword(email, password)
.addOnCompleteListener(SignupActivity.this, new OnCompleteListener<AuthResult>()
{
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
progressBar.setVisibility(View.GONE);
// If sign in fails, display a message to the user. If sign in succeeds
// the auth state listener will be notified and logic to handle the
// signed in user can be handled in the listener.
if (!task.isSuccessful())
{
new MaterialStyledDialog.Builder(context)
.setHeaderDrawable(R.drawable.oh_snap)
.withDialogAnimation(true)
.setTitle("Oh Snap!")
.setDescription("Authentication failed. " + task.getexception())
.setPositiveText("Try Again")
.onPositive(new MaterialDialog.SingleButtonCallback()
{
@Override
public void onClick(@NonNull MaterialDialog dialog, @NonNull DialogAction which)
{
//TODO: Clear text fields.
}
})
.show();
}
}
答案 0 :(得分:2)
如果我正确阅读了您的规范,您将获取一个输入数组a
,以及两个值low
和high
。您必须返回一个新数组,其中只包含(包含)low
和high
之间的元素。
您没有按任何顺序编写元素的顺序(除了在测试用例中元素按升序排序)。注意:如果需要,您可以轻松添加sort()
方法。
主要问题是您必须确定返回数组的大小。有很多方法可以做到这一点。为简单起见,我将在两个循环中完成。
public static int[] range( int[] a, int low, int high) {
int result_size=0;
int i, j;
// determine result size
for (i=0; i< a.length;i++) {
if ((low <= a[i]) && (a[i] <= high)) result_size++;
}
// build the result array
int [] result = new int[result_size];
j = 0; // destination
for (i = 0; i < a.length; i++) {
if ((low <= a[i]) && (a[i] <= high)) {
result[j] = a[i];
j++;
}
}
return result;
}