Wątek przeniesiony 2016-12-14 18:48 z Java przez bogdans.

Zły argument w metodzie ???

0

Witam otóż mam takie zadanie:

Dana jest tablica zmiennych typu char przechowujaca napis Ala ma kota. Napisz
metode, która policzy ile razy wystapiły znaki składajace sie na ciag dostarczony
jako argument.

napisałem taki kod :

	public static int ile(char []tab1){
		
		int licznik=0;
		
		for(int i=0; i>tab1.length; i++){
			licznik++;
		}
		return licznik;
		
	}
	
	
	public static void main(String[] args) {
	int	wrt=5;

	
		show(10);
		
		modifyValue(wrt);
		modifyValue(wrt);
		ile(tabA);
		
		
		char[] tabA={'A','l','a','m','a','k','o','t','a'};
	}

Wyskakuje mi, że argument dostarczony w metodzie jest zły. Co jest nie tak ?

1

Po pierwsze za co odpowiada metoda modifyValue(wrt)?
A za co show()?

0

Prze praszam za niedokładność. To może tak:```
public static int ile(char []tab1){

	int licznik=0;
	
	for(int i=0; i>tab1.length; i++){
		licznik++;
	}
	return licznik;
	
}


public static void main(String[] args) {
int	wrt=5;


	show(10);
	
	
	
	ile(tabA);
	
	
	char[] tabA={'A','l','a','m','a','k','o','t','a'};
}
1

Najpierw uruchamiasz funkcję oczekującą tablicy tabA, a potem dopiero taką tablicę tworzysz.

1

Ciągle nie odpowiedziałeś co robi show()?
Metoda ile() jest dosyć zabawna -> liczysz rozmiar tablicy jednocześnie go wywołując w pętli tab1.length.
Jeżeli show(10) odpowiada za wyświetlenie 10 znaków z podanej tablicy to dostajesz ArrayIndexOutOfBoundException ponieważ Twoja tablica posiada tylko 9 znaków (nie uwzględniłeś spacji)

0

Coś co napisałem kupę czasu temu, ale działa:

/*
 * Decompiled with CFR 0_118.
 */
package text;

import java.io.PrintStream;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;

public class CountLetters {
    HashMap<Character, Integer> countLetters(String msg) {
        HashMap<Character, Integer> letters = new HashMap<Character, Integer>();
        char[] message = msg.toCharArray();
        int i = 0;
        while (i < msg.length()) {
            Character letter = Character.valueOf(message[i]);
            if (letters.containsKey(letter)) {
                letters.put(letter, letters.get(letter) + 1);
            } else {
                letters.put(letter, 1);
            }
            ++i;
        }
        return letters;
    }

    HashMap<Character, Integer> countLetters(String msg, HashMap<Character, Integer> letters) {
        char[] message = msg.toCharArray();
        int i = 0;
        while (i < msg.length()) {
            Character letter = Character.valueOf(message[i]);
            if (letters.containsKey(letter)) {
                letters.put(letter, letters.get(letter) + 1);
            } else {
                letters.put(letter, 1);
            }
            ++i;
        }
        return letters;
    }

    Map<Character, Integer> sortMap(Map<Character, Integer> map) {
        TreeMap<Character, Integer> sortedMap = new TreeMap<Character, Integer>(map);
        return sortedMap;
    }

    void printMap(Map<Character, Integer> map) {
        for (Map.Entry<Character, Integer> entry : map.entrySet()) {
            System.out.println("Character: " + entry.getKey() + " occurs " + entry.getValue() + " times");
        }
    }
}

Sorki, że zdekompilowane, ale nie mogłem znaleźć source chyba już gdzieś poleciało w siną dal :P
Za to dorzucam jara

0

Racja dziękuje, ale pojawia się następny problem.Czemu po wywołaniu metody wyskakuje mi 0 ?

	public static int ile(char []tab1){
		
		int licznik=0;
		
		for(int i=0; i>tab1.length; i++){
			licznik++;
		}
		System.out.println(licznik);
		return licznik;
		
	}
	
	
	public static void main(String[] args) {
	
	char[] tabA={'A','l','a','m','a','k','o','t','a'};
	
		
		ile(tabA);
		
		
		
	}
0

aaa sory, *show * było do innego zadania

1

wystakuje 0 bo i nigdy nie jest większe od tab1.length

w ogóle po co piszesz to "liczenie"? nie lepiej


public static int ile(char []tab1){

        return  tab1.length;

    }

osobiście proponuje poczytać o podstawach ponownie bo masz problem z pętlami.

0

o bożeee nie w tą stronę klamerka:D dziękuje i pozdrawiam.

1 użytkowników online, w tym zalogowanych: 0, gości: 1