2016-03-03 2 views
-3

Я новичок в кодировании, беря онлайн-курс на данный момент. Теперь я застрял, и я не могу найти что-нибудь, чтобы помочь вам двигаться дальше. Задача состоит в том, чтобы случайно напечатать количество номеров, присвоенных программе. Ввод 5, и программа дает вам 5 случайных чисел. После этого сортировка их в нечетные и четные. Все в порядке.Java Количество элементов массива

Моя проблема заключается в том, что я не знаю, как подсчитывать числа в каждом массиве (не добавляя их вместе), а подсчитывая, сколько там нечетных чисел и как существуют любые четные числа.

Ищет помощь и руководство.

P.s извините, если есть ответ, сделал все возможное, чтобы найти его, прежде чем спрашивать. d.s

import java.util.*; 
    public class RandomNbrs { 

public static void main(String[] args) { 
    // TODO Auto-generated method stub 

    Scanner scan = new Scanner(System.in); 

    System.out.println("How many random numbers do you want? (0-999)"); 
    int numb = scan.nextInt(); 

    System.out.println("Your random numbers:"); 

    int array[] = new int[numb]; 

    for(int i =0; i < numb; i++){ 

     array [i] = (int) (0 + 1000 * Math.random()); 
     System.out.print(array[i]); 
     System.out.print(" "); 


    } 
    System.out.println(); 
    System.out.println(); 
    System.out.println("Even numbers: "); 


    for(int j =0; j < numb; j++){ 

     if(array[j] %2 == 0){ 


      System.out.print(array[j]); 
      System.out.print(" "); 
     } 


    } 


    System.out.println(); 
    System.out.println(); 
    System.out.println("Odd numbers: "); 

    int oddNbr = 0; 

    for(int k =0; k < numb; k++){ 

     if(array[k] %2 == 1){ 


      System.out.print(array[k]); 
      System.out.print(" "); 

     } 

    } 


} 



} 
+0

Ну у вас уже есть счетчик для нечетных чисел, т.е. 'oddNbr'. Вам просто нужно увеличить его, выполнив 'oddNbr ++' внутри условия 'if', где вы проверяете условие. Сделайте аналогичный счетчик для Even Numbers и сделайте то же самое. – user2004685

+0

Добро пожаловать в SO. Пожалуйста, отредактируйте свое сообщение, чтобы использовать правильное написание и пунктуацию. Это и другие советы можно найти на странице [Запросить страницу справки] (http://stackoverflow.com/help/how-to-ask). –

+0

@ user2004685, спасибо! Я пробовал это. Но я наклоняю, кажется, все правильно. Я хочу, чтобы один напечатанный номер был меньше числа массива. Попробуйте сделать это неправильно. – forTheLoveOfJava

ответ

0

это, как я решил эту задачу:

общественного класса testTest {

public static void main(String[] args) { 
    // TODO Auto-generated method stub 

    int oddCounter=0; 
    int evenCounter=0; 

    Scanner scan = new Scanner(System.in); 

    System.out.println("How many random numbers do you want? (0-999)"); 
    int numb = scan.nextInt(); 

    System.out.println("Your random numbers:"); 

    int array[] = new int[numb]; 

    for(int i =0; i < numb; i++){ 

     array [i] = (int) (0 + 1000 * Math.random()); 

     System.out.print(array[i]); 
     System.out.print(" "); 


    } 
    System.out.println(); 
    System.out.println(); 


    for(int j =0; j < numb; j++){ 

     if(array[j] %2 == 0){ 
      evenCounter++; 

     } 

    } 

    System.out.println("Dessa " + evenCounter + " Even numbers: "); 
    for(int j =0; j < numb; j++){ 


     if(array[j] %2 == 0){ 


      System.out.print(array[j]); 
      System.out.print(" "); 

     } 

    } 


    System.out.println(); 
    System.out.println(); 




    for(int k =0; k < numb; k++){ 

     if(array[k] %2 == 1){ 
      oddCounter++; 

     } 

    } 
    System.out.println("Dessa " + oddCounter + " Odd numbers: "); 
    for(int k =0; k < numb; k++){ 

     if(array[k] %2 == 1){ 

      System.out.print(array[k]); 
      System.out.print(" "); 

     } 

    } 

} 

}

0

Есть несколько концепций, которые вы, вероятно, неправильно поняли.

  1. Вы говорите, что вам нужно создать два разных массива для нечетных и четных чисел. Однако в коде, который вы предоставили, я вижу только 1 массив, называемый «array». Обратите внимание, что массив [j] и массив [k] относятся к одному и тому же массиву. j и k являются переменными.

Итак, если вам действительно нужны два разных массива для двух чисел, вам нужно создать еще два массива. Есть несколько способов, но это было бы самым простым (может не обязательно быть лучшим, хотя) идя код:

import java.util.*; 
public class RandomNbrs 
{public static void main(String[] args) { 
// TODO Auto-generated method stub 

Scanner scan = new Scanner(System.in); 

System.out.println("How many random numbers do you want? (0-999)"); 
int numb = scan.nextInt(); 

System.out.println("Your random numbers:"); 

int array[] = new int[numb]; 
int temp,countOdd=0,countEven=0; 

for(int i =0; i < numb; i++){ 
//I am storing the random generated number in a temporary variable 
//Then i check if it is odd or even and increase the count by using a counter 

    temp= (int) (0 + 1000 * Math.random()); 
    if (temp%2 == 0): 
     countEven++; 
    else 
     countOdd++; 
    array[i]=temp 

    System.out.print(array[i]); 
    System.out.print(" "); 


} 
System.out.println(); 
System.out.println(); 
//Here i am creating two new arrays as you specified. 
//if you just want to print the odd and even numbers AND their couns, you dont necessarily need to make these two arrays. 
int arrayOdd[] = new int[countOdd]; 
int arrayEven[]=new int[countEven]; 

//Counter for accessing the elements of the two new arrays 
int counter1=0,counter2=0; 


//Filling the two new arrays with odd and even numbers from the prev array 
for(int j =0; j < numb; j++){ 

    if(array[j] %2 == 0){ 

     arrayEven[counter1++]=array[j]; 
    } 

    else 
     arrayOdd[counter2++]=array[j]; 


} 

    //Print odd 
System.out.println("Odd:"); 

for(int k =0; k < countOdd; k++){ 

     System.out.print(arrayOdd[k]); 
     System.out.print(" "); 

} 
System.out.println("Total odd numbers="+countOdd); 
//or arrayOdd.length() also gives the count. 
//Similar for printing even numbers 
}} 

Кроме того, вы также можете использовать ArrayList, где вы можете динамически и непосредственно хранить четной и нечетной генерироваться случайные числа в 2 массивах, и вам не нужен третий общий массив. Дайте мне знать, если вы хотите знать, как это сделать. :)

+0

Спасибо! @CoderBC, я буду использовать эти примеры, когда я буду нарушать свой код. Как вы сказали, я неправильно понял, что они переменные, а не разные массивы. – forTheLoveOfJava

Смежные вопросы