例如,如果我输入inRange(1,6)
,则必须为以下数组打印{2,2,2,3,5}
。我不确定我的逻辑是否正确。有一个更好的方法吗?我也不确定如何构造我的return语句。我想这样做而不使用arraylist或数组。
public class AgeCount {
static int[] a=new int[]{1,2,45,6,3,2,1,2,5,6,65,45,43,21,34,34};
public AgeCount(){
}
public static int inRange(int b,int e)
{
int store[]=new int[a.length];
int count=0;
for (int i = 0; i < a.length; i++) {
if(a[i]>b && a[i]<e)
{
return a[i];
}
}
return 0;
}
答案 0 :(得分:0)
如果您的方法只需打印给定范围的数字,则不必返回任何内容:
public static void inRange(int b,int e)
{
int count=0;
System.out.print('{');
boolean first = true;
for (int i = 0; i < a.length; i++) {
if(a[i]>=b && a[i]<=e)
{
if (!first) {
System.out.print(',');
} else {
first = false;
}
System.out.print(a[i]);
}
}
System.out.print('}');
}
这假设输出的顺序并不重要。如果确实重要,请在循环之前对输入数组进行排序。
答案 1 :(得分:0)
到目前为止开始不错!即使你说你不想使用数组或ArrayList
,但在这里使用它最有意义。我会使用ArrayList
Integers
而不只是数组,因为我们还不知道长度。你会说return a[i];
而不是说store.append(a[i]);
。我还没有测试过这段代码,所以可能会有一两个错误,所以如果我错了请纠正我,但这里有固定版本:
public class AgeCount {
static int[] a=new int[]{1,2,45,6,3,2,1,2,5,6,65,45,43,21,34,34};
public AgeCount(){
}
public static void inRange(int b,int e)
{
ArrayList<Integer> store = new ArrayList<Integer>();
int count=0;
for (int i = 0; i < a.length; i++) {
if(a[i]>=b && a[i]<=e)
{
store.append(a[i]);
}
}
println(store);
}
}
答案 2 :(得分:0)
Java 8方法:
int[] arr = new int[] {1,2,45,6,3,2,1,2,5,6,65,45,43,21,34,34};
int res[] = Arrays.stream(arr).filter(n -> n >= b && n <= e).toArray();
System.out.println(Arrays.toString(res));
我不确定你为什么不想使用数组或某种列表。如果它是用于作业的,那么如果您只想显示结果,则不要从方法返回值,而是打印它。否则,您应该考虑使用List
。
答案 3 :(得分:0)
Java8:
public static void main(String[] args) {
int[] arrayToFilter = new int[]{1, 2, 45, 6, 3, 2, 1, 2, 5, 6, 65, 45, 43, 21, 34, 34};
int upperLimit = 5;
inRange(arrayToFilter, upperLimit);
}
private static void inRange(int[] arrayToFilter, int upperLimit) {
String sortedAndLimitedString = Arrays.stream(arrayToFilter)
.sorted()
.filter(value -> value < upperLimit)
.mapToObj(String::valueOf)
.collect(Collectors.joining(",", "{", "}"));
System.out.println(sortedAndLimitedString);
}
输出: {1,1,2,2,2,3}
答案 4 :(得分:0)
我认为必须对结果进行排序。
public static int[] inRange(int b,int e) {
return IntStream.of(a)
.filter(n -> n > b && n < e)
.sorted()
.toArray();
}
System.out.println(Arrays.toString(AgeCount.inRange(1, 6)));
// -> [2, 2, 2, 3, 5]
```
答案 5 :(得分:0)
这听起来像是一个家庭作业问题。还在这里。
你的回报是单个int,它必须是122235,代表满足你的范围条件的所有int。
所以你使用BitSet类并设置在范围内找到的位,你可以转换为上面的int并返回。
答案 6 :(得分:0)
这是简单的&amp;最短的解决方案。
import java.util.*;
public class AgeCount
{
static int[] a=new int[]{1,2,45,6,3,2,1,2,5,6,65,45,43,21,34,34};
public AgeCount()
{
}
public static void inRange(int b,int e)
{
int store[]=new int[a.length];
Arrays.sort(a);
for (int i = b; i < e; i++)
{
System.out.print(a[i+1]+",");
}
}
}
这就是你返回一个值的方法。
//sort an array, get a defined index values, and print it on the screen.
import java.util.*;
public class AgeCount
{
static int[] a=new int[]{1,2,45,6,3,2,1,2,5,6,65,45,43,21,34,34};
public AgeCount()
{
}
public static int[] inRange(int b,int e)
{
int store[]=new int[a.length];
int[] myRange = new int[e-b];
Arrays.sort(a);
for (int i = b; i < e; i++)
{
for (int j = 0; j < (e-b); j++)
{
myRange[j] = a[i+1];
}
System.out.print(a[i+1]+",");
}
return myRange;
}
}
答案 7 :(得分:0)
首先,看起来你似乎并不完全清楚自己想要做什么。那没关系!如果我们不确定应该发生什么,有时问题似乎会让人感到压力和困惑。
我建议您在开始新任务时花些时间 分解 该任务。拿一张纸,尝试将其分解成最小和最简单的部分,然后从那里开始,一点一点地编码和测试。 SDLC的基础知识(尝试谷歌搜索软件开发生命周期)也可以帮助你 - 这一切都是关于弄清楚你想要实现什么,以及你需要实现的各种事情。
请不要惊慌失措,抛出你不理解的代码!你只会陷入混乱的深处!