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

Tablice sprawdzenie kodu java

VPS Starter Arubacloud
0 głosów
307 wizyt
pytanie zadane 12 stycznia 2019 w Java przez mn130496 Gaduła (3,530 p.)

Witam

Jestem studentem drugiego roku informatyki i ostatnio za czołem naukę języka Java.Mam takie zadanie: Stworzyć tablicę 7 x 7 liczb całkowitych, wypełnić ją losowymi wartościami, następnie wyznaczyć dla każdej kolumny minimum i maksimum, najmniejszy oraz najwięszy element w tablicy, średnią arytmetyczną elementów tablicy, ilość elementów mniejszych oraz większych od średniej. Do nowej tablicy skopiować w odwrotnej kolejności zawartość tablicy tj. od ostatniego do pierwszego. Napisałem taki kod:

package zadania_lab4;
import java.util.Random;
public class zad_2 {
	public static void main(String[] args) {
		Random r = new Random();
		//deklaracja zmiennych
		int[][] tab = new int[7][7];
		int[][] odwrucona = new int [7][7];
		int największe_w_kolumnie_0=tab[0][0];
		int największe_w_kolumnie_1=tab[0][1];
		int największe_w_kolumnie_2=tab[0][2];
		int największe_w_kolumnie_3=tab[0][3];
		int największe_w_kolumnie_4=tab[0][4];
		int największe_w_kolumnie_5=tab[0][5];
		int największe_w_kolumnie_6=tab[0][6];
		int najmniejsze_w_kolumnie_0=tab[0][0];
		int najmniejsze_w_kolumnie_1=tab[0][1];
		int najmniejsze_w_kolumnie_2=tab[0][2];
		int najmniejsze_w_kolumnie_3=tab[0][3];
		int najmniejsze_w_kolumnie_4=tab[0][4];
		int najmniejsze_w_kolumnie_5=tab[0][5];
		int najmniejsze_w_kolumnie_6=tab[0][6];
		
		//zapełnienie tablicy losowymi liczbami 
		for(int i=0; i<tab.length; i++) {
			for(int j=0; j<tab[i].length; j++) {
				tab[i][j] = r.nextInt(51)+99;
			}
		}
		
		//Wyświetlenie zawartości tablicy
				for(int i=0; i<tab.length; i++) {
					for(int j=0; j<tab[i].length; j++) {
						System.out.print(tab[i][j] + " ");
					}
					System.out.println();
				}
				
		// Szukanie min i max w kolumnach
		for(int i=0;i<tab.length;i++)
			for(int j=0;j<1;j++) {
		  if(największe_w_kolumnie_0<tab[i][j])największe_w_kolumnie_0=tab[i][j];
			}
		System.out.println("Największa wartość w kolumnie 0 to: "+największe_w_kolumnie_0);
		
		for(int i=0;i<tab.length;i++)
			for(int j=1;j<2;j++) {
		  if(największe_w_kolumnie_1<tab[i][j])największe_w_kolumnie_1=tab[i][j];
			}
		System.out.println("Największa wartość w kolumnie 1 to: "+największe_w_kolumnie_1);
		
		for(int i=0;i<tab.length;i++)
			for(int j=2;j<3;j++) {
		  if(największe_w_kolumnie_2<tab[i][j])największe_w_kolumnie_2=tab[i][j];
			}
		System.out.println("Największa wartość w kolumnie 2 to: "+największe_w_kolumnie_2);
		
		for(int i=0;i<tab.length;i++)
			for(int j=3;j<4;j++) {
		  if(największe_w_kolumnie_3<tab[i][j])największe_w_kolumnie_3=tab[i][j];
			}
		System.out.println("Największa wartość w kolumnie 3 to: "+największe_w_kolumnie_3);
		
		for(int i=0;i<tab.length;i++)
			for(int j=4;j<5;j++) {
		  if(największe_w_kolumnie_4<tab[i][j])największe_w_kolumnie_4=tab[i][j];
			}
		System.out.println("Największa wartość w kolumnie 4 to: "+największe_w_kolumnie_4);
		
		for(int i=0;i<tab.length;i++)
			for(int j=5;j<6;j++) {
		  if(największe_w_kolumnie_5<tab[i][j])największe_w_kolumnie_5=tab[i][j];
			}
		System.out.println("Największa wartość w kolumnie 5 to: "+największe_w_kolumnie_5);
		
		for(int i=0;i<tab.length;i++)
			for(int j=6;j<7;j++) {
		  if(największe_w_kolumnie_6<tab[i][j])największe_w_kolumnie_6=tab[i][j];
			}
		System.out.println("Największa wartość w kolumnie 6 to: "+największe_w_kolumnie_6);
		
		for(int i=0;i<tab.length;i++)
			for(int j=0;j<1;j++) {
		  if(najmniejsze_w_kolumnie_0>tab[i][j])najmniejsze_w_kolumnie_0=tab[i][j];
			}
		System.out.println("Najmniejsza wartość w kolumnie 0 to: "+najmniejsze_w_kolumnie_0);
		
		for(int i=0;i<tab.length;i++)
			for(int j=1;j<2;j++) {
		  if(najmniejsze_w_kolumnie_1>tab[i][j])najmniejsze_w_kolumnie_1=tab[i][j];
			}
		System.out.println("Najmniejsza wartość w kolumnie 1 to: "+najmniejsze_w_kolumnie_1);
		
		for(int i=0;i<tab.length;i++)
			for(int j=2;j<3;j++) {
		  if(najmniejsze_w_kolumnie_2>tab[i][j])najmniejsze_w_kolumnie_2=tab[i][j];
			}
		System.out.println("Najmniejsza wartość w kolumnie 2 to: "+najmniejsze_w_kolumnie_2);
		
		for(int i=0;i<tab.length;i++)
			for(int j=3;j<4;j++) {
		  if(najmniejsze_w_kolumnie_3>tab[i][j])najmniejsze_w_kolumnie_3=tab[i][j];
			}
		System.out.println("Najmniejsza wartość w kolumnie 3 to: "+najmniejsze_w_kolumnie_3);
		
		for(int i=0;i<tab.length;i++)
			for(int j=4;j<5;j++) {
		  if(najmniejsze_w_kolumnie_4>tab[i][j])najmniejsze_w_kolumnie_4=tab[i][j];
			}
		System.out.println("Najmniejsza wartość w kolumnie 4 to: "+najmniejsze_w_kolumnie_4);
		
		for(int i=0;i<tab.length;i++)
			for(int j=5;j<6;j++) {
		  if(najmniejsze_w_kolumnie_5>tab[i][j])najmniejsze_w_kolumnie_5=tab[i][j];
			}
		System.out.println("Najmniejsza wartość w kolumnie 5 to: "+najmniejsze_w_kolumnie_5);
		
		for(int i=0;i<tab.length;i++)
			for(int j=6;j<7;j++) {
		  if(najmniejsze_w_kolumnie_6>tab[i][j])najmniejsze_w_kolumnie_6=tab[i][j];
			}
		System.out.println("Najmniejsza wartość w kolumnie 6 to: "+najmniejsze_w_kolumnie_6);
		
		//wyznaczanie szukanie minimum i maksimum i wyświetlenie
		int min = tab[0][0];
		int max = tab[0][0];
		for (int i=0; i<tab.length; i++) {
			for(int j=0; j<tab[i].length; j++) {
				if(tab[i][j]<min) {
					min = tab[i][j];
				} else if(tab[i][j] > max) {
					max=tab[i][j];
				}
			}
		} 
		System.out.println("Najmniejszy elemęt wynosi " +min+" a Największy elemęt wynosi " +max);
		
	//obliczanie średniej arytmetycznej 
	int licznik=0;
	double suma=0,średnia=0;
	for(int i=0; i<tab.length;i++) {
		for(int j=0; j<tab[i].length; j++) {
			licznik++;
		}
	}
	for(int i=0; i<tab.length;i++) {
		for(int j=0; j<tab[i].length; j++) {
			suma+=tab[i][j];
		}
			
		}
	średnia=(suma)/(licznik);
	System.out.println("Srednia arytmetyczna elemętów tablicy wynosi:"+średnia);
	
	//znalezienie i wyświetlenie ilości elemętów mniejszych i większych od średniej.
	int mniejsze=0,większe=0;
	for(int i=0; i<tab.length; i++) {
		for(int j=0; j<tab[i].length; j++) {
			if(tab[i][j]<średnia) {
				mniejsze++;
			} else if(tab[i][j] > średnia) {
				większe++;
			}
		}
	} System.out.println("elęmętów mniejszych od średniej jest: "+mniejsze);
	System.out.println("elemętów większych od średniej jest: "+większe);
	
	//zapisanie i wyświetlenie tablicy w odwrotnej kolejności 
	int q=6;
	for(int i=0; i<tab.length; i++) {
		int w=6;
		for(int j=0; j<tab.length; j++) {
			odwrucona[q][w]=tab[i][j];
			w--;
		}
		q--;
	}
	System.out.println("Tablica w odwrotnej kolejności: ");
	for(int i=0; i<odwrucona.length; i++) {
		for(int j=0; j<odwrucona.length; j++) {
			System.out.print(odwrucona[i][j] + " ");
		}
		System.out.println();
		
	}
		
}
}

 Niestety program nie do końca dobrze działa .Chodzi o to rze niezależnie od kolumny pokazujem i , że wartość  najmniejsza w danej kolumnie to 0. Ponieważ programowanie nie jest moją mocną stroną mógłby ktoś pomuc mi poprawić ten kod , żeby działał jak trzeba?. Z góry dziękuję

pozdrawiam 

1 odpowiedź

+1 głos
odpowiedź 13 stycznia 2019 przez mbabane Szeryf (79,280 p.)

Kod jest mocno przeładowany, ale ok, uczysz się, nie musisz od razu wszystkiego  wiedzieć i widzieć.

Na przykład sprawdzanie max i min dla każdej kolumny, można załatwić jedną pętla (znaczy dwoma, bo jedna iteruje po kolumnach, a druga po wierszu). W bardzo podobny sposób jak to:

int min = tab[0][0];
int max = tab[0][0];
for (int i=0; i<tab.length; i++) {
     for(int j=0; j<tab[i].length; j++) {
         if(tab[i][j]<min) {
             min = tab[i][j];
         } else if(tab[i][j] > max) {
                max=tab[i][j];
         }
}

 

A Twój problem jest w tym miejscu:

  int największe_w_kolumnie_0=tab[0][0];
        int największe_w_kolumnie_1=tab[0][1];
        int największe_w_kolumnie_2=tab[0][2];
        int największe_w_kolumnie_3=tab[0][3];
        int największe_w_kolumnie_4=tab[0][4];
        int największe_w_kolumnie_5=tab[0][5];
        int największe_w_kolumnie_6=tab[0][6];
        int najmniejsze_w_kolumnie_0=tab[0][0];
        int najmniejsze_w_kolumnie_1=tab[0][1];
        int najmniejsze_w_kolumnie_2=tab[0][2];
        int najmniejsze_w_kolumnie_3=tab[0][3];
        int najmniejsze_w_kolumnie_4=tab[0][4];
        int najmniejsze_w_kolumnie_5=tab[0][5];
        int najmniejsze_w_kolumnie_6=tab[0][6];
         
        //zapełnienie tablicy losowymi liczbami 
        for(int i=0; i<tab.length; i++) {
            for(int j=0; j<tab[i].length; j++) {
                tab[i][j] = r.nextInt(51)+99;
            }
        }

To znaczy. Najpierw robisz przypisanie do zmiennych z tablicy, która jest wypełniana wartościami w kolejnych krokach. Czyli np. tutaj:

 int najmniejsze_w_kolumnie_0=tab[0][0];

pod zmienną, będzie znajdować się wartość 0, ponieważ, jeśli tablica składa się z typów prostych to domyślnie jest wypełniana zerami. 

Dla maksów Ci zadziałało, ponieważ zawsze znajdzie się wartość większa od zera bo:

tab[i][j] = r.nextInt(51)+99;

W przypadku minimum 0 będzie zawsze mniejsze od wartości w tablicy.

 

Zwróć też uwagę na błędy ortograficzne, bo na prawdę "że" przez rz? Ja to toleruję, ale na pewno są osoby, które potraktują to jakbyś w ten sposób nimi gardził - a tak na prawdę gardzisz sobie, bo co ma myśleć o Tobie osoba czytająca. Pisząc w dodatku, (w pierwszym zdaniu), że jesteś studentem drugiego roku. Masz pewnie wykrywanie błędów w przeglądarce, więc korzystaj z tego jeśli nie wiesz przez jakie "u" pisze się dany wyraz. Nikt nie zobaczy, że wspierasz się tym mechanizmem. A wręcz podziała to na Twoją korzyść.

Podobne pytania

0 głosów
1 odpowiedź 160 wizyt
pytanie zadane 2 marca 2019 w Java przez mn130496 Gaduła (3,530 p.)
0 głosów
1 odpowiedź 260 wizyt
0 głosów
2 odpowiedzi 333 wizyt
pytanie zadane 13 listopada 2018 w Java przez mn130496 Gaduła (3,530 p.)

92,453 zapytań

141,262 odpowiedzi

319,088 komentarzy

61,854 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

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 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!

...