Zmatok v premennych(zaciatocnik) – Java – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Zmatok v premennych(zaciatocnik) – Java – Fórum – Programujte.comZmatok v premennych(zaciatocnik) – Java – Fórum – Programujte.com

 

antiatlet
~ Anonymní uživatel
4 příspěvky
3. 6. 2012   #1
-
0
-

nefunguje mi pridavanie rozsahu pola cez metodu. mohol by mi niekto ozrejmit preco? davam sem pre istotu cely kod, ale jedna sa mi o metodu velkostPola. po tejto metode mi program crashne. typujem ze problem bude v deklaracii premenej x.

public class Matice {

    //static int[] pole=new int[3];
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
       
     Metody metoda=new Metody();
     
    metoda.velkostPola();
     //System.out.print(metoda.vypisVelkostPola());
     metoda.nacitaj();
     System.out.print(metoda.vypis());
    
    Metody metoda2=new Metody();
    Metody metoda3=new Metody();
    metoda2.nacitaj();
    System.out.print(metoda2.vypis());
    System.out.print(metoda.vypis());
    System.out.print(metoda.vynasob());
    System.out.print("skus :"+metoda.vypisSkusobnu());
    }
}


import java.util.*;
/**
 *
 * @author Jose
 */
public class Metody {
    static int x=5;
    int[] pole=new int[x];
    static int skusobnaPremenna=0;
    //protected int i;
    Scanner scan=new Scanner(System.in);
    
    public void velkostPola(){
    System.out.println("napis velkost pola");
    x=scan.nextInt();
    }
    
    public void napis(){
    System.out.print("vypisujem");
    }
    
    Metody(){
    skusobnaPremenna++;
    }
    
    public boolean nacitaj(){
    for(int i=0;i<pole.length;i++){
        
         pole[i]=scan.nextInt();
    }
        
        return true;
    }
   

    public int vypis(){
        return pole[2];
    }
    public int vynasob()
    {
        return pole[2]*3;
    }
    
    public int vypisSkusobnu()
    {
    return skusobnaPremenna;
    }
    
    public int vypisVelkostPola()
    {
    return x;
    }
    
}


Nahlásit jako SPAM
IP: 95.102.142.–
sakal910
Stálý člen
3. 6. 2012   #2
-
0
-

když tak sem hoď i výpis té chyby co ti vypíše :)

Nahlásit jako SPAM
IP: 31.222.8.–
antiatlet
~ Anonymní uživatel
4 příspěvky
3. 6. 2012   #3
-
0
-

#2 sakal91
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 2
at matice.Metody.vypis(Metody.java:43)
at matice.Matice.main(Matice.java:24)
Java Result: 1

Nahlásit jako SPAM
IP: 95.102.142.–
antiatlet
~ Anonymní uživatel
4 příspěvky
3. 6. 2012   #4
-
0
-

pre lepsi prehlad som to co najviac zjednodusil aby bolo vidno kde je problem, program skonci pri metode naplnPole

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package skuska2;
import java.util.*;
/**
 *
 * @author Jose
 */
public class Metoda {
    
    static int x=0;
    int[] pole= new int[x];
    Scanner scan=new Scanner(System.in);
    
    public void velkostPola(){
    System.out.println("napis velkost pola");
    x=scan.nextInt();
    }
    
    
    public void naplnPole(){
        pole[0]=1;
    }
    
    
}


/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package skuska2;
import java.util.*;
/**
 *
 * @author Jose
 */
public class Main {
    public static void main(String[] args) {
    
        Metoda metoda= new Metoda();
        metoda.velkostPola();
        
        metoda.naplnPole();
    }
    
    
}

Nahlásit jako SPAM
IP: 95.102.142.–
pistolnik0
Newbie
3. 6. 2012   #5
-
0
-

Na řádku:  

int[] pole= new int[x];

vytváříš pole velikosti 0. Sice pak přes Scanner nastavíš novou hodnotu x. Ale velikost pole už nikde neměníš!.

Takže zkus něco takového:

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package skuska2;
import java.util.*;
/**
 *
 * @author Jose
 */
public class Metoda {
    
    static int x=0;
    int[] pole;
    Scanner scan=new Scanner(System.in);
    
    public void velkostPola(){
    System.out.println("napis velkost pola");
    x=scan.nextInt();
    pole = new int[x];
    }
    
    
    public void naplnPole(){
        pole[0]=1;
    }
    
    
}
Nahlásit jako SPAM
IP: 2001:718:1e02:9120:89a1:e...–
sakal910
Stálý člen
3. 6. 2012   #6
-
+1
-
Zajímavé

Přesně jak napsal pistolnik :) Ještě bych ti poradil, když vytváříš objekt tak se nauč používat get/set metody a konstruktor... Usnadní ti to hodně práce a tvůj program bude mnohem přehlednější.

Nahlásit jako SPAM
IP: 31.222.8.–
antiatlet
~ Anonymní uživatel
4 příspěvky
3. 6. 2012   #7
-
0
-

dakujem za odpovede. tie metody si pozriem, ale mam jednu otazku. ked hovoris o tom, ze mi to ulahci pracu a zprehladni kod, tak to myslis ako radu do buducna alebo tym myslis aj taketo jednoduche programy ako som prave uploadol sem?

Nahlásit jako SPAM
IP: 95.102.142.–
sakal910
Stálý člen
3. 6. 2012   #8
-
0
-

#7 antiatlet
V budoucnu to určitě potřebovat budeš a na těchto jednoduchých úkolech to záleží jen na tobě :) Já osobně to používám všude :) Například si zkus představit, že máš kód cca o 1500 řádcích a potřebuješ změnit aby se ti proměnná nastavovala jinak... tak bys musel projet celý kód a zdlouhavě hledat kde všude tu proměnnou nastavuješ, ale když budeš mít set metodu, tak to stačí změnit v té metodě set protože jinde v kódu používáš třeba jen tu metodu... Rozhodně ti to ulehčí práci a přehlednost a čím dříve to poznáš a pochopíš, tím dříve si uvědomíš jakou to má moc :)

Nahlásit jako SPAM
IP: 31.222.8.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 14 hostů

Podobná vlákna

Odosielanie premenných — založil Pali

[C99] Velkosť premenných — založil Tango

Čítanie premenných z .txt — založil lukas.balaz

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý