计算苹果和橙子,但橙子没有被计算在内.为什么?

  • 本文关键字:计算 橙子 苹果 java arrays list
  • 更新时间 :
  • 英文 :


我在Hackerrank上练习编码,我实现了一个适用于苹果的逻辑,但不适用于橙子。Idk为什么。任何想法?

*//int s = start of the house
// int t = end of the house...
// int a = Apple tree location
// int b = Orange tree location
// Integer apples is a list of numbers.
// Integer oranges is a list numbers aswell. 

逻辑如下:如果树点int aint b的位置加上List<Integer> apples/oranges的值在st之间,我们必须将计数器增加1。苹果和橘子我们用不同的计数器。


public static void countApplesAndOranges(int s, int t, int a, int b, List<Integer> apples, List<Integer> oranges) {
// Write your code here
int applesOnhouse = 0;
int orangeOnhouse = 0;
List<Integer> house = new ArrayList<>();
for(int i = s; s < t; s++){
house.add(i);
}
for(int j = 0; j < apples.size(); j++){
if(house.contains(a + apples.get(j))){
applesOnhouse++;
}
}
for(int z = 0; z < oranges.size(); z++){
if(house.contains(b + oranges.get(z))){
orangeOnhouse++;
}
}
System.out.println(applesOnhouse);
System.out.println(orangeOnhouse);

}
}

我是一名大三学生,我只是不明白为什么这对苹果有用,而对橙子却不行。我只是想更深入地了解数组操作、列表操作和逻辑。

学会调试

调试工作是这样的:你想象,在精确的细节,你的代码应该做什么。然后检查代码的实际功能。如果不一样,你就发现了一个bug。修复它,然后重复这个过程。继续执行,直到代码完全按照您的设想执行。

例如,打印house列表的内容。你会发现,比如,s = 5, t = 8,你的房屋清单是[5, 5, 5]。这应该会让你想:WTF?然后你意识到你的代码中有一个bug;你应该写for (int i = s; i < t; i++)

这可能不是唯一的大;继续这个过程。你会找到他们的。

你可以使用下面的代码,并工作良好:

import java.io.*;
import java.math.*;
import java.security.*;
import java.text.*;
import java.util.*;
import java.util.concurrent.*;
import java.util.regex.*;
public class Solution {
// Complete the countApplesAndOranges function below.
static void countApplesAndOranges(int s, int t, int a, int b, int[] apples, int[] oranges) {
long np= 0;
long no= 0;
for(int i=0;i<apples.length;i++){
if(a+apples[i]>=s && a+apples[i]<=t){
np++;
}
}
for(int j=0;j<oranges.length;j++){
if(b+oranges[j]>=s && b+oranges[j]<=t){
no++;
}
}
System.out.println(np);
System.out.println(no);
}
private static final Scanner scanner = new Scanner(System.in);
public static void main(String[] args) {
String[] st = scanner.nextLine().split(" ");
int s = Integer.parseInt(st[0]);
int t = Integer.parseInt(st[1]);
String[] ab = scanner.nextLine().split(" ");
int a = Integer.parseInt(ab[0]);
int b = Integer.parseInt(ab[1]);
String[] mn = scanner.nextLine().split(" ");
int m = Integer.parseInt(mn[0]);
int n = Integer.parseInt(mn[1]);
int[] apples = new int[m];
String[] applesItems = scanner.nextLine().split(" ");
scanner.skip("(rn|[nru2028u2029u0085])?");
for (int i = 0; i < m; i++) {
int applesItem = Integer.parseInt(applesItems[i]);
apples[i] = applesItem;
}
int[] oranges = new int[n];
String[] orangesItems = scanner.nextLine().split(" ");
scanner.skip("(rn|[nru2028u2029u0085])?");
for (int i = 0; i < n; i++) {
int orangesItem = Integer.parseInt(orangesItems[i]);
oranges[i] = orangesItem;
}
countApplesAndOranges(s, t, a, b, apples, oranges);
scanner.close();
}
}

最新更新