• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Zsumuj liczby parzyste i nieparzyste tablicy mxn. [Java]

Object Storage Arubacloud
+1 głos
866 wizyt
pytanie zadane 16 listopada 2021 w Java przez ptomeccc Użytkownik (800 p.)

Cześć, na zajęciach dostałem do zrobienia zadanie o takiej treści: "Napisz program, który utworzy tablicę dwuwymiarową 5x6 i wypełni ją losowymi liczbami całkowitymi z przedziału [0,9]. Następnie program powinien wyświetlić informację o ilości liczb parzystych i nieparzystych znajdujących się w tablicy, a także policzyć sumę liczb parzystych oraz średnią liczb nieparzystych." Udało mi się napisać kod, znaczy tak mi się wydawało, ponieważ gdy kompiluje ten program, w wyniku sum brakuje zazwyczaj 5 liczb, zależy od wylosowanych. Wydaję mi się, że program może nie zliczać 0 w przypadku liczb parzystych, ale nie wiem co z liczbami nieparzystymi i jak to rowiązać. 

import java.util.Random;
import java.util.Scanner;
public class zad4_4
{
    public static void main(){
        Random los = new Random();
        Scanner in = new Scanner(System.in);
        int[][] A = new int[5][6];
        int sumaParzystych = 0;
        int sumaNieparzystych = 0;
        int suma = 0;
        double avr = 0.0;
        int temp = 0;
        for(int i=0; i<A.length; i++){ 
            for(int j=0;j<A[i].length;j++){
                A[i][j] = los.nextInt(10);
            }
        }
        for(int i=0; i<A.length; i++){ 
            for(int j=0;j<A[i].length;j++){
                System.out.format("%4d",A[i][j]);
            }
            System.out.println();
        }
        for(int i=0; i<A.length;i++){
            for(int j=0; j<A.length; j++){ 
                if(A[i][j] % 2 == 0){
                    sumaParzystych = sumaParzystych + 1;
                    suma = suma + A[i][j];
                }else{
                    sumaNieparzystych = sumaNieparzystych + 1;
                    temp = temp + A[i][j];
                }
            }
        }
        for(int i=0; i<A.length;i++){
            for(int j=0; j<A.length; j++){ 
                if(A[i][j] % 2 != 0){
                    avr = (double)temp / (double)sumaNieparzystych;
                }
            }
        }
        System.out.println("Liczb parzystych: "+sumaParzystych);
        System.out.println("Liczb nieparzystych: "+sumaNieparzystych);
        System.out.println("Suma liczb parzystych: "+suma);
        System.out.println("Średnia liczb nieparzystych: "+avr);
    }
}

 

2 odpowiedzi

+1 głos
odpowiedź 17 listopada 2021 przez VBService Ekspert (253,340 p.)
edycja 17 listopada 2021 przez VBService
 
Najlepsza

Tu masz błąd linia 26

masz

        for(int i=0; i<A.length;i++){
            for(int j=0; j<A.length; j++){ 
                if(A[i][j] % 2 == 0){

powinno być

        for(int i=0; i<A.length;i++){
            for(int j=0; j<A[i].length; j++){ 
                if(A[i][j] % 2 == 0){

 

 

 

P.S Można ograniczyć ilość tych for-ów  wink

propozycja

import java.util.Random;

public class zad4_4
{
	public static void main() {
        Random los = new Random();
        // utworzy tablicę dwuwymiarową 5x6
        int[][] A = new int[5][6]; 
        int ileParzystych = 0;
        int ileNieparzystych = 0;
        int sumaParzystych = 0;
        int sumaNieparzystych = 0;
        
        for(int i=0; i<A.length; i++){ 
            for(int j=0;j<A[i].length;j++){
                // wypełni ją losowymi liczbami całkowitymi z przedziału [0,9]
                A[i][j] = los.nextInt(10);
                
                System.out.format("%4d",A[i][j]);
                
                if(A[i][j] % 2 == 0){
                    ileParzystych++; // ilości liczb parzystych
                    sumaParzystych += A[i][j]; // policzyć sumę liczb parzystych
                }else{
                    ileNieparzystych++; // ilości liczb nieparzystych
                    sumaNieparzystych += A[i][j];
                }               
            }
            System.out.println();
        }

        System.out.println("Liczb parzystych: " + ileParzystych);
        System.out.println("Liczb nieparzystych: " + ileNieparzystych);
        System.out.println("Suma liczb parzystych: " + sumaParzystych);
        System.out.println("Średnia liczb nieparzystych: " + (double)(sumaNieparzystych / ileNieparzystych));
    }
}

 

0 głosów
odpowiedź 16 listopada 2021 przez radek024 Szeryf (77,160 p.)
Do jakiego typu sumujesz liczby zmiennoprzecinkowe? Kodu dalej nie analizuję, to pierwsza rzecz która rzuciła mi się w oczy.
komentarz 16 listopada 2021 przez ptomeccc Użytkownik (800 p.)
Jedyne liczby zmiennoprzecinkowe jakie mogą się pojawić w tym programie to wynik średniej, który jest już jako double.
komentarz 16 listopada 2021 przez Wiciorny Ekspert (270,170 p.)

ale kolega dobrze Ci radzi... uzywać chcesz jako wynik podwójnej precyzji po co inta rzutujesz do podwójnej precyzji skoro integer nie jest zmienno przecinkowy 

  avr = (double)temp / (double)sumaNieparzystych;

sumaNieparzystych -> suma nie bedzie zmiennoprzecinkowa ani zmienna temp 

Podobne pytania

+1 głos
1 odpowiedź 902 wizyt
pytanie zadane 25 września 2022 w JavaScript przez Klaudiaaaa Początkujący (250 p.)
0 głosów
1 odpowiedź 186 wizyt
pytanie zadane 11 maja 2021 w C i C++ przez gallba Nowicjusz (120 p.)
0 głosów
2 odpowiedzi 625 wizyt
pytanie zadane 31 października 2018 w HTML i CSS przez Rafał Masny Obywatel (1,700 p.)

92,576 zapytań

141,426 odpowiedzi

319,650 komentarzy

61,961 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...