• 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]

VPS Starter Arubacloud
+1 głos
948 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 (255,800 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 (277,460 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ź 1,039 wizyt
pytanie zadane 25 września 2022 w JavaScript przez Klaudiaaaa Początkujący (250 p.)
0 głosów
1 odpowiedź 228 wizyt
pytanie zadane 11 maja 2021 w C i C++ przez gallba Nowicjusz (120 p.)
0 głosów
2 odpowiedzi 657 wizyt
pytanie zadane 31 października 2018 w HTML i CSS przez Rafał Masny Obywatel (1,700 p.)

92,980 zapytań

141,943 odpowiedzi

321,189 komentarzy

62,307 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.

Wprowadzenie do ITsec, tom 2

Można już zamawiać tom 2 książki "Wprowadzenie do bezpieczeństwa IT" - będzie to około 650 stron wiedzy o ITsec (17 rozdziałów, 14 autorów, kolorowy druk).

Planowana premiera: 30.09.2024, zaś planowana wysyłka nastąpi w drugim tygodniu października 2024.

Warto preorderować, tym bardziej, iż mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy dodatkowe 15% zniżki! Dziękujemy zaprzyjaźnionej ekipie Sekuraka za kod dla naszej Społeczności!

...