Forum zamknięte. Zapraszamy do grupy na Facebooku
Odpowiedz 
 
Ocena wątku:
  • 0 Głosów - 0 Średnio
  • 1
  • 2
  • 3
  • 4
  • 5
Pomoc w zaliczeniu zadania
12-04-2013, 05:56 PM
Post: #1
Pomoc w zaliczeniu zadania
Witam jestem po raz pierwszy na forum ale czuje że będę stałym bywalcem tutaj zaczynam dopiero swoją zabawę z java i szczerz myślałem że będzie dużo łatwiej. Musze na 14 grudnia napisać pracę semestralną przybrałem się bo myślałem że będzie to stosunkowo łatwe ( niestety przeliczyłem się) znalazłem człowieka który mi program napisze za 20 zł niby to nie pieniądze i miałbym sprawę z głowy jeśli chodzi o zaliczenie ale jest jeden mankament takiej sytuacji nic mi nie zostanie w głowie :) a chciałbym zrozumieć co robię nie tak. Dlatego może przepiszę zadanie które otrzymałem i przy pomocy forumowiczów wspólnie może uda się mnie oświecić.
Zadanie wygląda tak :

Dla tablicy 5x5 opracuj i przetestuj w programie następujące funkcje:
- inicjującą tablicę losowymi liczbami całkowitymi należącymi do przedziału (0, 100)
- wyprowadzającą zawartość tablicy wierszami na ekran
- obliczającą sumę elementów należących do wiersza o numerze i, gdzie 1<=i<=5
- obliczającą sumę elementów należących do kolumny o numerze j gdzie 1<=j<=5
- sortującą niemalejąco każdy z wierszy tablicy
- sortującą niemalejąco każdą z kolumn tablicy
- znajdującą w tablicy element minimalny i maksymalny

Strasznie to w sumie nie wygląda nie :) ale problem napotkałem na samym początku

package praca;
import java.util.Random;
import java.util.Scanner;

public class praca {

public static void main(String[] args)
{
Random r = new Random();
Scanner skaner = new Scanner(System.in);
{
int[][] tablica = new int [5][5];
/* inicjuję tablicę dwuwymiarową 5x5 */
{ (lub i<100;)
for(int i=0; i<tablica.length; i++)

System.out.println();
/* wypełniam tablicę i 0 i drukuję */
{

{ (lub j<100;)
for (int j=0; j < tablica[j].length; j++)

System.out.println();
/* wypełniam tablicę j 0 i drukuję */
}
}

}

}
}

Eclipse nie pokazuje mi błędu jako takiego tylko wypisuje Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 5 at praca.praca.main(praca.java:23) nie bardzo wiem o co mu chodzi wyszedłem poza wymiar ?
Nie jest to jakaś tragedia ale doszedłem do wniosku że czytanie książki K. Walczaka "Java Nauka programowania dla początkujących" jest pomyłką bo :
- uno zajmuje to strasznie dużo czasu a nie wnosi nic konstruktywnego
- nie jest to książka dla początkujących tylko dla ludzi którzy już mieli z tym językiem do czynienia ja niestety do nich się nie zaliczam
Dlatego rzuciłem to czytanie a zacząłem oglądać na youtubie które dały mi większy pogląd niż ta książka :) O ile potrzebne informacje pozbierałem do kupy typu :
- Zapewnia wykorzystanie metody toString klasy Arrays. Odwołanie:
System.out.println(Arrays.toString(T))
- Do sortowania tablic przechowujących liczby służą metody sort dostępne w klasie Arrays. Korzysta ona ze zoptymalizowanej wersji algorytmu QuickSort.
int tab[] = new int[1000]; Arrays.sort(tab);
- Przeszukiwanie tablicy
Arrays.binarySearch(typ[] tab, typ wartosc)
itd. itd. mam problem z ulokowaniem tego w programie i zrozumieniem co robie nie tak. Dlatego gorąca prośba czy ktoś mógłby mi rzucić trochę światła i nakierować mnie. Nie zależy mi na tym żeby ktoś mi napisał w pełni działający program bo to mi nic nie da oprócz zaliczenia a ja chciałbym zrozumieć co robie nie tak bo chyba chciałbym zacząć się zagłębiać w javie może się to w przyszłości przydać. Dlatego z góry dziękuję za ewentualne wskazówki i proszę się nie denerwować za mocno jak będę zadawał lamerskie pytania
Znajdź wszystkie posty użytkownika
Odpowiedz cytując ten post
12-04-2013, 07:21 PM (Ten post był ostatnio modyfikowany: 12-04-2013 07:41 PM przez lolo.)
Post: #2
RE: Pomoc w zaliczeniu zadania
1.Nie rozumiem twojego zapisu a ponadto dziwi mnie, że IDE nie wywala błędów na taki zapis jak:

Kod:
Scanner skaner = new Scanner(System.in);
{
int[][] tablica = new int [5][5];

albo

Kod:
for(int i=0; i<tablica.length; i++)

System.out.println();
/* wypełniam tablicę i 0 i drukuję */    
{

poza tym używaj znaczników

2. co to jest w ogóle

Kod:
{ (lub i<100;)


Możesz mi to wszystko wytłumaczyć? Wtedy Ci bardzo chętnie pomogę.

GG: 2802571
Znajdź wszystkie posty użytkownika
Odpowiedz cytując ten post
12-04-2013, 07:57 PM
Post: #3
RE: Pomoc w zaliczeniu zadania
Scanner skaner = new Scanner(System.in);

to pozostałość z przeróbki programu który miał opcje wprowadzania z klawiatury wymiaru tablic usunąłem linijki bo mi to nie potrzebne moja tablica ma być 5x5 ale ten wpis pozostawiłem bo to jest import biblioteki którą może wykorzystam

int[][] tablica = new int [5][5];

no to jest inicjalizacja tablicy 5x5 jak mniemam 5 wierszy i 5 kolumn

for(int i=0; i<tablica.length; i++)
System.out.println();

ten zapis wypełnia 0 całą tablicę i powinien wydrukować jej zawartość czylo pokazać 00000 w kolumnach i wierszach

{ (lub i<100Wink

to są moje rozważania bo nie wiedziałem czy prawidłowo jest tak : i<tablica.length czy tak : i<100 bo muszę wypełnić liczbami losowymi z zakresu 0 do 100
Znajdź wszystkie posty użytkownika
Odpowiedz cytując ten post
12-04-2013, 08:06 PM (Ten post był ostatnio modyfikowany: 12-04-2013 08:07 PM przez lolo.)
Post: #4
RE: Pomoc w zaliczeniu zadania
Nie chodzi mi o te polecenia tylko te klamry { po nich występujące i których masz pełno w kodzie. Zapomniałem je pogrubić jak pisałem poprzedni post.

A sam zapis
Kod:
for(int i=0; i<tablica.length; i++)
System.out.println();
nie robi tego co napisałeś a jedynie 5 razy wyświetli nic.

Ta linia powoduje błąd:
Kod:
for (int j=0; j < tablica[j].length; j++)
popraw na
Kod:
for (int j=0; j < tablica.length; j++)
Twój zapis mówi, że pętla ma się wykonywać dopóki j jest mniejsze od j-tego elementu tablicy.

GG: 2802571
Znajdź wszystkie posty użytkownika
Odpowiedz cytując ten post
12-04-2013, 08:43 PM
Post: #5
RE: Pomoc w zaliczeniu zadania
Serdeczne dzięki za uwagi po modyfikacji zaczęło wyświetlać 00000 więc prawidłowo usunąłem ten scaner jak będzie potrzebny to się doda jeśli chodzi o te nawiasy to nie mam pojęcia po co ich tyle stawiam dotąd aż eclipse przestanie wyświetlać błąd niestety on więcej zna się na javie niż ja Smile i skoro potrzebuje to mu przecież nie będę żałował (to tak półżartem) dodałem teraz tab[i]=r.nextInt(); która teoretycznie powinna wpisać losowe liczby to tablicy tylko nie jestem pewny czy nie powinno być tutaj komendy return ale w sumie nie ma tutaj żadnych działań więc na logikę return nie jest potrzebne w każdym bądź razie eclipse na chwilę obecną zgłasza mi błąd "tab cannot be resolved to a variable " teoretycznie powinna ta linijka nadpisać istniejące wartości liczbami losowymi mam rację czy znowu krążę w okolicy ?


package praca;
import java.util.Random;


public class praca {

public static void main(String[] args)
{
Random r = new Random();

{
int[][] tablica = new int [5][5];
/* inicjuję tablicę dwuwymiarową 5x5 */
{
for(int i=0; i<tablica.length; i++)
{
tab[i]=r.nextInt();
System.out.println(i);

{
for (int j=0; j < tablica.length; j++)
tab[j]=r.nextInt();
System.out.println(j);




}}}}}}
Znajdź wszystkie posty użytkownika
Odpowiedz cytując ten post
12-04-2013, 09:23 PM (Ten post był ostatnio modyfikowany: 12-04-2013 09:38 PM przez lolo.)
Post: #6
RE: Pomoc w zaliczeniu zadania
Błąd który ci zgłasza jest spowodowany tym, że próbujesz używać nie zdeklarowanej tablicy tab[]; Jednak to nie jedyny błąd jaki znajduje się w twoim kodzie. To, że się kod kompiluje nie znaczy, że będzie działał poprawnie. Człowieku ty nie znasz chyba podstaw, nie możesz wstawiać klamer byle kompilator przestał się rzucać. Kolejna sprawa to odnosisz się do tablicy 2 wymiarowej jak do jednowymiarowej.

GG: 2802571
Znajdź wszystkie posty użytkownika
Odpowiedz cytując ten post
12-05-2013, 05:26 AM
Post: #7
RE: Pomoc w zaliczeniu zadania
"Człowieku ty nie znasz chyba podstaw," To stwierdzenie jest w 100% zgodne z rzeczywistością w szkole nie nauczyli mnie nic przez 6 zjazdów przeleciano jave w całości wraz z programowaniem apletów (wyobraź sobie tempo, jako że z programowaniem nie miałem nigdy do czynienia efekt nauczania wygląda tak a nie inaczej) wiem tyle co wyczytam na kursach www i obejrzę na youtubie tak jak pisałem mogę iść na łatwiznę zlecić to i zaliczyć tylko nie zmieni to faktu że dalej nic nie będę umiał staram się napisać kawałek kawałek tego testu ze zrozumieniem i powoli zagłębiać się dalej. Śmieszy mnie to bo w jednym semestrze przerobiony został HTML podstawy HTML5 i CSS podstawy c++ programowanie java i pisanie apletów java sporo materiału który trzeba ogarnąć. Kursy przeważnie są do tablic jednowymiarowych bo na nich tłumaczą zasadę a jak na razie nie łapnołem jak zmienić to na dwuwymiarowe dlatego prosze o wyrozumiałość i jak byś dał radę podpowiedzieć co robię źle to postaram się to poprawić.
Znajdź wszystkie posty użytkownika
Odpowiedz cytując ten post
12-05-2013, 04:46 PM
Post: #8
RE: Pomoc w zaliczeniu zadania
Studiujesz zaocznie czy jak? A ile godzin mieliście w czasie 1 zjazdu? Wiem jak wygląda edukacja w szkołach, ja też się z zajęć w szkole niczego z programowania nie nauczyłem. Jakbyś przerobił chociaż kurs javastart to już powinieneś mieć dobre podstawy i nie pisać {} byle kompilator się odczepił. Skoro to jest twoja wiedza wyczytana z kursów www i youtube to musiałeś je czytać wyrywkowo. Co do tablic to nawet w kursie javastart są one opisane, zaraz pod tablicami jednowymiarowymi.
A co do zadania to jest ono bardzo łatwe moim zdaniem i szybko je rozwiązałem(nie chcesz kupićWink ). Najtrudniejszy punkt całego zadania to sortowanie liczb w kolumnie. A i tak wystarczyło tylko chwile zastanowić by je zrealizować.

GG: 2802571
Znajdź wszystkie posty użytkownika
Odpowiedz cytując ten post
12-05-2013, 05:54 PM (Ten post był ostatnio modyfikowany: 12-05-2013 06:20 PM przez roxman.)
Post: #9
RE: Pomoc w zaliczeniu zadania
technik informatyk nie studia za wysoko mierzysz troszeczkę Smile są opisane ale wszystkie przykłady zaawansowane są dla tablic jednowymiarowych a jak widzisz nie lapnołem schematu jeszcze jak przekształcić to
package praca;
zmodyfikowałem delikatnie po przeczytaniu paru tutków i błędu niby nie ma ale wyświetla mi dziwne wartości w tablicy:
[[I@19189e1, [I@1f33675, [I@7c6768, [I@1690726, [I@5483cd]
powinny być 0 chyba

import java.util.Random;
import java.util.Arrays;

public class praca {

public static void main(String[] args)
{
Random r = new Random();


{
int[][] tablica = new int [5][5];

{
for(int i=0; i<tablica.length; i++){
for (int j=0; j < tablica.length; j++){
tablica[i][j]=0;
}}}

System.out.println(Arrays.toString(tablica)) ;

}

{

}}}
Znajdź wszystkie posty użytkownika
Odpowiedz cytując ten post
12-05-2013, 06:18 PM
Post: #10
RE: Pomoc w zaliczeniu zadania
Dobrze te tablice mogę jeszcze zrozumieć, chociaż nie ma tu nic zaawansowanego w ich wykorzystywaniu, ale te klamry? To przecież podstawy są.

GG: 2802571
Znajdź wszystkie posty użytkownika
Odpowiedz cytując ten post
Odpowiedz 


Skocz do:


Użytkownicy przeglądający ten wątek: 1 gości