嗨,伙计们,你们好吗?=)我是新来的Java,目前,我正在学习数组和循环,目前我真的在与它们作斗争。
我的任务是返回以9
结尾的数字数组。不要更改其余数字的顺序。我唯一能用的就是for循环。
我的大脑现在有点崩溃了,我不知道该怎么办。
当我返回一个结果时,它以int
3991599399
的形式返回。
目前,我在考虑如何将结果排除在for循环之外。С你能帮我找到一种方法,将所有带有9的数字存储在一个新数组中吗?
public int[] leavePrice9(int[] prices) {
for (int i = 0; i < prices.length; i++) {
int result = prices[i];
if (result % 10 == 9);
}
}
public static void main(String[] args) {
QuadraticEquationSolver shop = new QuadraticEquationSolver();
//Should be [399, 1599, 399]
int[] prices = new int[] {399, 1599, 399, 50, 10, 10, 70};
System.out.println(Arrays.toString(shop.leavePrice9(prices)));
}
}
您可以使用以下方法。它接受一个由int
和一个数字(0-9)组成的数组,并返回一个新数组,其中包含所有将该指定数字作为最后一位数字的元素。原始数组的元素保持不变,因此顺序明显保留。
import java.util.*;
public class Application {
public static void main(String[] args) {
int[] prices = new int[]{399, 1599, 399, 50, 10, 10, 70};
System.out.println(Arrays.toString(getAllWithLastDigit(prices, 9)));
}
public static int[] getAllWithLastDigit(int[] array, int lastDigit){
if(lastDigit < 0 || lastDigit > 9) throw new IllegalArgumentException("lastDigit must be between 0 and 9!");
var lst = new ArrayList<Integer>();
for (int i = 0; i < array.length; i++) {
int result = array[i];
if (result % 10 == lastDigit) lst.add(result);
}
// convert array list back to integer array
return lst.stream().mapToInt(i -> i).toArray();
}
}
预期输出:
[399, 1599, 399]
这使用了一个ArrayList
,当我们遇到最后一个数字是9的元素时,它可以动态地将元素添加到列表中。最后,我们需要将列表转换回数组,因为您需要返回一个整数数组。
您所做的只是字符串连接,而不是这样做,我们现在将元素添加到列表中,将该列表转换回int
数组,然后返回
它。您的实现忽略了创建和返回新数组的部分。
这里是一个没有使用ArrayList
的版本。在这里,我们首先创建一个能够容纳最大结果数的数组,并向其中添加一个结果,同时为每个新元素增加一个计数器
。然后我们必须(可能)缩小数组,以便它只包含数组中实际存在的元素数。为此,我们创建一个数组的副本,其中包含我们结果中的任何元素。
import java.util.*;
public class Application {
public static void main(String[] args) {
int[] prices = new int[]{399, 1599, 399, 50, 10, 10, 70};
System.out.println(Arrays.toString(getAllWithLastDigit(prices, 9)));
}
public static int[] getAllWithLastDigit(int[] array, int lastDigit){
if(lastDigit < 0 || lastDigit > 9) throw new IllegalArgumentException("lastDigit must be between 0 and 9!");
// create an array which has the same size as the input, this way we guarantee that we have enough space for all result
int[] elements = new int[array.length];
// counter of how many elements are in the array
int counter = 0;
for (int i = 0; i < array.length; i++) {
int result = array[i];
if (result % 10 == lastDigit) elements[counter++] = array[i];
}
// now we need to create a new array which is exactly as long as we need it (if we don't have that already)
if(counter == array.length) return elements;
// Alternative: use Java API Arrays.copyOf(elements, counter)
return copyArray(array, counter);
}
public static int[] copyArray(int[] array, int newLength){
if(newLength < 0) throw new IllegalArgumentException("Length must not be < 0");
var copy = new int[newLength];
// make sure we don't go out of bounds because the new array could be longer than the old one
var until = Math.min(array.length, newLength);
// copy over all elements
for (int i = 0; i < until; i++) {
copy[i] = array[i];
}
return copy;
}
}
问题内容: 我有两个一维数组x和y,一个比另一个小。我试图找到x中y的每个元素的索引。 我发现有两种简单的方法可以做到这一点,第一种很慢,第二种需要占用大量内存。 记忆猪 是否有更快的方法或更少的内存密集型方法?理想情况下,搜索将利用以下事实:我们不是在列表中搜索一件事,而是在搜索许多东西,因此稍微适合并行化。如果您不假设y的每个元素实际上都在x中,则可获得加分。 问题答案: 正如Joe King
我是一名 Java 初学者,我一直在尝试编写一种方法来列出数组中某个 int 的所有索引。到目前为止,我所做的是将该 int 的值存储在另一个数组中的相应索引处,但我能做的最好的事情就是将所有其他不等于原始 int 的索引的值设置为 -1。 我想我需要在数组中存储值I,并删除所有的-1,但是我不知道怎么做。顺便说一下,这些值是-1,因为这个程序中所有的数组都包含0-100之间的整数。如果数组中的整
给定一个整数数组,返回两个数字的索引,使它们相加到一个特定的目标。 例子: 给定nums=,target=6, 因为=24=6 。 解决方案 上面的代码在其他情况下有效,但在本例中无效。 预期结果 输出 例如,我尝试使用不同的数字数组和不同的目标,即使你改变数字的顺序,它也能工作 例子: 新数组:,目标=9, 输出:。 我不明白这个解决方案出了什么问题,我希望有人能解释一下。谢谢
问题内容: 我有两个numpy数组A和B。A包含唯一值,而B是A的子数组。 例如: 问题答案: 您可以使用带有- 如果您关心维护订单,也可以使用- 对于一般情况,当&是未排序的数组时,您可以在中引入选项,就像这样- 为了解决一般情况,我还会添加我最喜欢的内容- 样品运行-
有一种方法可以将特定的数字从一个数组复制到另一个数组吗? 例如: 我有一个数组 ,我想将奇数和偶数复制到不同的数组中。因此,结果应该是
如果我从问题中选择“q1”,我如何从答案中选择第一个数组? 这是我现在的代码: