Java 使用条件将整数保存到foor循环后的向量中
我必须为奇数和偶数之间的差异设置一个for循环。我正在考虑在for循环中使用if/else语句,该语句计算deresidence,以确定是偶数还是奇数。完成后,我想将数字保存在一个向量中:一个向量用于if条件,另一个向量用于else 这是我的密码Java 使用条件将整数保存到foor循环后的向量中,java,arrays,for-loop,vector,Java,Arrays,For Loop,Vector,我必须为奇数和偶数之间的差异设置一个for循环。我正在考虑在for循环中使用if/else语句,该语句计算deresidence,以确定是偶数还是奇数。完成后,我想将数字保存在一个向量中:一个向量用于if条件,另一个向量用于else 这是我的密码 import java.io.*; import java.util.Arrays; import java.util.*; class Even_odd_array { static void CountingEvenOdd(
import java.io.*;
import java.util.Arrays;
import java.util.*;
class Even_odd_array {
static void CountingEvenOdd(int arr[],
int arr_size)
{
int even_count = 0;
int odd_count = 0;
//int [] subvector_odd = {};
Vector<Integer> vector_odd = new Vector<Integer>();
Vector<Integer> vector_even = new Vector<Integer>();
// loop to read all the values in
// the array
for(int i = 0 ; i < arr_size ; i++)
{
// checking if a number is
// completely divisible by 2
if ((arr[i] & 1) == 1)
odd_count ++ ;
vector_odd.addElement(arr[i]);
else
even_count ++ ;
vector_even.addElement(arr[i]);
}
System.out.println( "Number of even"
+ " elements = " + even_count
+ " Number of odd elements = "
+ odd_count) ;
System.out.println(vector_odd); //This vector should look like [1, 3, 5, 7]
}
// Driver Code
public static void main (String[] args)
{
int arr[] = {2, 4, 6, 8, 10, 1, 3, 5, 7};
int n = arr.length;
CountingEvenOdd(arr, n);
}
}
当我在if语句中包含vector.add()方法时,else语句行出现错误,我不明白为什么
谢谢 当前,您的
else
块与任何if
条件无关(但是,如果块包含单个语句,则可以省略大括号)
要解决此问题,请使用大括号分隔if
和else
块:
if ((arr[i] & 1) == 1) {
odd_count ++ ;
vector_odd.addElement(arr[i]);
}
else {
even_count ++ ;
vector_even.addElement(arr[i]);
}
您当前的代码相当于:
if ((arr[i] & 1) == 1) {
odd_count ++ ;
}
vector_odd.addElement(arr[i]);
else {
even_count ++ ;
}
vector_even.addElement(arr[i]);
正如您所看到的,
else
部分不能与这里的if
部分相关。模运算符是%,而不是&它是按位and(请参阅)。此外,不需要将数组长度作为参数给定,也不需要for循环。通过使用下面的两行,您可以获得所需的一切
Integer[] array = {2, 4, 6, 8, 1, 3, 7};
Vector<Integer> vectorEven = Arrays.stream(array).filter(i -> i % 2 == 0).collect(Collectors.toCollection(Vector::new));
Vector<Integer> vectorOdd =Arrays.stream(array).filter(i -> i % 2 == 1).collect(Collectors.toCollection(Vector::new));
System.out.println(vectorEven);
System.out.println(vectorOdd.size());
Integer[]数组={2,4,6,8,1,3,7};
Vector vectorEven=Arrays.stream(array).filter(i->i%2==0).collect(collector.toCollection(Vector::new));
Vector vectorOdd=Arrays.stream(array).filter(i->i%2==1).collect(collector.toCollection(Vector::new));
System.out.println(vectorEven);
System.out.println(vectorOdd.size());
除此之外,您并不真正需要计数。您可以只打印vector_奇数和vector_偶数数组的大小:System.out.println(“偶数元素数=“+vector_偶数.size()+”奇数元素数=“+vector_奇数.size()”)它起作用了!但是当我将这些代码行放入一个方法中,然后从main调用它时,我遇到了一个问题。抛出:线程“main”java.lang中出现异常。错误:未解决的编译问题:对于类型SplitVectors,未定义方法subVector(Integer[]),参数subVector的非法修饰符;只有final允许在标记“(”,;在标记“)”上出现语法错误;应为public类splitvector{public static void main(String[]args){int[]Vector={1,2,3,4,5,6,7,8,9};System.out.println(subVector(Vector));public static int[]subVector(Integer[]Vector){Vector vectorEven=array.stream(Vector).filter(i->i%2==0).collect(collector.toCollection(Vector::new));Vector vectorOdd=Arrays.stream(Vector).filter(i->i%2==1).collect(Collectors.toCollection(Vector::new));return VectorEvent;return vectorOdd;}}//main}
这是代码在Java中无法返回两个变量。无论何时调用“return”,此语句后面的代码都不会执行。第二次返回永远无法到达。作为解决办法。。我不会将我提供的代码移动到单独的方法中。你想用这两个向量做什么?我不知道。我需要它,因为这是一个练习,我必须为我的大学课程做一个练习。练习在于在一个类中构建两个方法,一个告诉有多少个数是奇数和偶数,另一个方法是将向量拆分为奇数和偶数。我个人也会用同样的方法,但是……如果“告诉”意味着你应该打印结果,你仍然可以使用我上面写的代码。真正的“代码”在两种方法中都是相同的,但在一种方法中打印新向量,在另一种方法中打印大小-没有返回值,只是无效。然而,我不能说这是否是我想要的答案,也不能说我太喜欢这个练习,因为使用我给出的使用方法的代码片段并没有真正的帮助。
Integer[] array = {2, 4, 6, 8, 1, 3, 7};
Vector<Integer> vectorEven = Arrays.stream(array).filter(i -> i % 2 == 0).collect(Collectors.toCollection(Vector::new));
Vector<Integer> vectorOdd =Arrays.stream(array).filter(i -> i % 2 == 1).collect(Collectors.toCollection(Vector::new));
System.out.println(vectorEven);
System.out.println(vectorOdd.size());