Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用条件将整数保存到foor循环后的向量中_Java_Arrays_For Loop_Vector - Fatal编程技术网

Java 使用条件将整数保存到foor循环后的向量中

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(

我必须为奇数和偶数之间的差异设置一个for循环。我正在考虑在for循环中使用if/else语句,该语句计算deresidence,以确定是偶数还是奇数。完成后,我想将数字保存在一个向量中:一个向量用于if条件,另一个向量用于else

这是我的密码

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());