我正在嘗試計算索引屬于區間[n1;的陣列的整數之和。n2]
n1 & n2是 int & 0 <= n1 <= n2 < array.length
int[] array = new int[] {0, 1, 2, 3, 4, 5, 3};
int zeroToOne = calc(array,0, 1); // Should return 1
int zeroToFive = calc(array,0, 5); // Should return 15
int doubleZero = calc(array,0, 0); // Should return 0
int zeroToSix = calc(array, 0,6); // Should return 18
所以我嘗試了三種方法
第一種方法:
public static int calc(int[] array, int n1, int n2) {
int sum = 0;
for (int i = 0; i < array.length; i ){
if (i <= n2 && n1 <= i) {
sum = i;
}
}
return sum;
}
}
我有:
1 15 0 21
第二種方法:
public static int calc(int[] array, int n1, int n2) {
int sum = 0;
for (int a: array){
if (n1 <= a && a <= n2){
sum = a;
}
}
return sum;
}
我有:
1 18 0 18
第三種方法:
public static int calc(int[] array, int n1, int n2) {
return Arrays.stream(array, n1, n2).sum();
}
我得到了:
0 10 0 15
我怎么解決這個問題?
uj5u.com熱心網友回復:
對您的第一個功能進行小改動,它應該可以作業:
public static int calc(int[] array, int n1, int n2) {
int sum = 0;
for (int i = n1; i <= n2; i ) {
sum = array[i];
}
return sum;
}
請注意,我們遍歷從位??置 n1 到 n2 的元素,并將它們相加。
uj5u.com熱心網友回復:
使用您的第一種方法,但索引陣列。
public static int calc(int[] array, int n1, int n2) {
int sum = 0;
for (int i = 0; i < array.length; i ){
if (i <= n2 && n1 <= i) {
sum = array[i]; // <-- change i to array[i]
}
}
return sum;
}
使用您的測驗還可以確保n1并且n2在陣列內,這對您來說是一個好主意。
uj5u.com熱心網友回復:
您呼叫的方法:
Arrays.stream(array, n1, n2)
在檔案中有以下定義:
stream(int[] array, int startInclusive, int endExclusive)
所以你可以看到第三個引數是獨占的。
你能做的就是用last index 1. 這應該沒問題:
return Arrays.stream(array, n1, n2 1).sum();
uj5u.com熱心網友回復:
將第一種方法更改為:
public static int calc(int[] array, int n1, int n2) {
int sum = 0;
for (int i = 0; i < array.length; i ){
if (array[i] <= n2 && n1 <= array[i]) {
sum = array[i];
}
}
return sum;
}
如果你想 n1 & n2 是int& 0 <= n1 <= n2 <array.length,
你最好檢查 n1 和 n2 的值,然后如果條件為假,請執行類似的操作throw a exception
為此:
public static int calc(int[] array, int n1, int n2) {
if(!(n1>=0 && n1<=n2 && n1<=array.length && n2<=array.length)){
// do something like throw a exception
}
int sum = 0;
for (int i = 0; i < array.length; i ){
if (array[i] <= n2 && n1 <= array[i]) {
sum = array[i];
}
}
return sum;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/463123.html
上一篇:另一個指向陣列問題的C 指標
