英文:
Finding MAX even and odd values in an array
问题
我需要找出给定数组中的最大偶数和最大奇数值。
在这种情况下,我需要控制台打印出最大的偶数为8,最大的奇数为11。
这是从另一个问题中修改的,因为提问有冷却时间。
import java.util.Scanner;
public class Question03 {
public static int[] array; // 问题中要使用的数组
public static void main(String[] args) {
int number; // 用于楼梯的变量
if (args == null || args.length == 0) {
int[] tempArray = {2, 4, 6, 8, 11}; // 你可以更改这些值进行测试
array = tempArray;
} else {
}
// 在这里编写你的解决方案
int evenMax = array[0];
int oddMax = array[0];
for (int x = 1; x < array.length; x++) {
if (evenMax % 2 == 0) {
if (evenMax < array[x]) {
}
}
if (oddMax < array[x]) {
oddMax = array[x];
}
}
System.out.println("最大的数是:" + evenMax + "。最小的数是:" + oddMax);
}
}
英文:
I need to find the MAX even and odd values of a given array.
In this case I need the console to print that the max even is 8 and the max odd is 11
This is revised from another question because of the cool down time for asking questions
import java.util.Scanner;
public class Question03 {
public static int[] array;//The array to be used in the problem
public static void main(String[] args) {
int number;//Used for the stairs
if(args == null || args.length == 0)
{
int[] tempArray ={2,4,6,8,11};//You may change these values to test
array = tempArray;
}
else
{
}
//Write your solution here
int evenMax = array[0];
int oddMax = array[0];
for (int x =1; x<array.length; x++){
if(evenMax %2 == 0)
{
if (evenMax<array[x])
{
}
}
if(oddMax<array[x]){
oddMax=array[x];
}
}
System.out.println("The largest number is: " + evenMax + ". The smallest number is: " +oddMax);
</details>
# 答案1
**得分**: 1
你可以在Java 8中使用流(Streams)以及Optional:
```java
import java.util.Arrays;
public static void main(String[] args) {
int[] array = {1,2,3};
Arrays
.stream(array)
.filter(n -> n > 0)
.average()
.getAsDouble();
}
参见:DoubleStream 和 OptionalDouble
英文:
You can use Streams from Java 8 along with Optional:
import java.util.Arrays;
public static void main(String[] args) {
int[] array = {1,2,3};
Arrays
.stream(array)
.filter(n -> n > 0)
.average()
.getAsDouble();
}
vide: DoubleStream and OptionalDouble
答案2
得分: 0
只是修复了你的代码,我添加了一个变量来存储在计算平均值时应该用作除数的元素数量。在这种情况下,total
存储了数组中所有元素的总和。
int elements = array.length;
double total = 0;
for(int i=0; i<array.length; i++)
{
if(array[i] < 0)
{
array[i] = 0;
}
if(array[i] == 0)
{
elements--;
}
total += array[i];
}
double average = total / elements;
System.out.println("平均值为:" + average);
P.S. 就像任何算法一样,解决这个问题有许多方法。但在这里,我的意图是根据你的思路来帮助你。
英文:
Just fixing your code, I added a variable to store the number of elements that should be used as divisor when calculating the average value. In this case total
store the sum of all elements in the array.
int elements = array.length;
double total = 0;
for(int i=0; i<array.length; i++)
{
if(array[i] < 0)
{
array[i] = 0;
}
if(array[i] == 0)
{
elements--;
}
total += array[i];
}
double average = total / elements;
System.out.println("the average was " +average);
P.S. As any algorithm there are many ways to solve this problem. But, here, my intent was to help you according to your line of thought.
答案3
得分: 0
以下是翻译好的内容:
这样怎么样:
double total = 0;
int count = 0;
for(int i=0; i<array.length; i++)
{
if(array[i] > 0)
{
total += array[i];
++count;
}
}
double average = total / count;
System.out.println("平均值为:" + average);
甚至可以这样:
double total = 0;
int count = 0;
for(double value: array)
{
if(value > 0)
{
total += value;
++count;
}
}
double average = total / count;
System.out.println("平均值为:" + average);
英文:
How about something like this:
double total = 0;
int count = 0;
for(int i=0; i<array.length; i++)
{
if(array[i] > 0)
{
total += array[i];
++count;
}
}
double average = total / count;
System.out.println("the average was " +average);
Or even:
double total = 0;
int count = 0;
for(double value: array)
{
if(value > 0)
{
total += value;
++count;
}
}
double average = total / count;
System.out.println("the average was " +average);
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论