wartość indeksu tablicy

0

Potrzebuje dostać się do numeru indeksu tablicy, to znaczy mam np. tablica[6] i chcę otrzymać liczbę 6
istnieje jakaś metoda która mi to umożliwi?

0

tablica.length

0

Jeśli jest typu int i składa się z 6 elementów możesz spróbować tak :

#include <iostream>
using namespace std;
int main()
{
    int tablica[6];
    cout << (sizeof(tablica) / (sizeof(int)));

    return 0;
}

sizeof(tablica) - zwraca 24
sizeof(int) - zwraca 4

0

Ale tablica[6] nie musi mieć wartości 6 :D

0
bogdans napisał(a):

tablica.length

nie o to mi chodzi
mam np.
int[] x = new int[3];
tab[0]=1;
tab[1]=1;
tab[2]=1;
int z = tab[2].zwróćIndeksTablicy(); //z=2

chodzi mi o tę metodę zwróćIndeksTablicy() czy istnieje taka metoda?

0

Opisz problem dokładniej. Który indeks ta metoda ma zwrócić?

0

tab[2].zwróćIndeksTablicy() ma zwrócić liczbe 2 czyli numer indeksu tab[2]
tab[78].zwróćIndeksTablicy() ma zwrócić liczbe 78 czyli numer indeksu tab[78]

wartości tab[2] czy tez tab[78] mnie kompletnie nie interesują, rozmiar całej tablicy też nie.

0

Nadal nie rozumiem. Chodzi o coś takiego

tab.getIndex(value)

ma zwrócić indeks ind (pierwszy, ostatni, losowy) taki, że tab[ind] = value?

0
bogdans napisał(a):

Nadal nie rozumiem. Chodzi o coś takiego

tab.getIndex(value)

ma zwrócić indeks ind (pierwszy, ostatni, losowy) taki, że tab[ind] = value?

ciężko mi lepiej zobrazować co mam na myśli, mam wrażenie ze ująłem juz to wystarczająco jasno i szweszwe też ujął to jasno, ale spróbuje jeszcze tak. Wyobraźmy sobie tak dialog

[Ja] - hej bogdans czy mógłbyś powiedzieć mi jaki NUMER INDEKSU ma ta zmienna tab[127]?
[bogdans] - Numer indeksu tab[127] to oczywiście 127
[Ja]- a numer indeksu tab[51554] ?
[bogdans] - to 51554, chciałbyś możę wiedzieć coś o wartościach jakie znajdują się pod tymi zmiennymi?
[Ja]- Nie wartości zawarte pod tab[127] oraz tab[51554] mnie nie interesują. Już wszystko mi powiedziałeś. Dzięki!

0

Jeśli Ty ująłeś jasno i @szweszwe ujął jasno, to niech Ci @szweszwe odpowie. Ja nie mam pojęcia o co Ci chodzi.
Mógłbyś chociaż odpowiedzieć na moje pytanie z poprzedniego postu.

0

nie chodzi mi o to aby zwracał mi numery indeksów w których wartość to X

mająć tab[63].zwróćIndeksTejZmiennej(); zwróci mi liczbe jest pomiędzy "tab[ " a " ]" czyli 63
mając wyrażenie

System.out.println( tab[63].zwróćIndeksTejZmiennej(); );
w konsoli wypisze mi " 63"

System.out.println( tab[120].zwróćIndeksTejZmiennej(); );
w konsoli wypisze mi " 120"

0

"Ogólnie dla tab[i] chodzi mu o wartość i. - szweszwe 8 minut temu"

dokładnie

0

Po pierwsze, tab[63] może być typu prostego, np. int i nie można na rzecz tab[63] wywołać żadnej metody.
Po drugie, jeśli nawet tab[63] jest obiektem, to ten obiekt nie wie czy siedzi w jakichś tablicach, a jeśli siedzi, to jaki ma indeks.
Może Tobie chodzi o to by ze Stringu "tab[63]" wyciąć to co jest między nawiasami kwadratowymi.

0

Nie bardzo wiem w jakim celu chcesz dostać indeks tablicy skoro ten indeks tam sam podajesz.
Zawsze możesz przypisać go do jakiejś zmiennej
int i = 2;
wtedy index tab[i] wynosi i
Ewentualnie, tak jak ktoś podał link, ale to działa tylko dla tablicy gdzie każda wartość jest unikalna.

(Arrays.asList(tab)).indexOf(tab[5]);

Z tym, że dla

Integer[] tab = {1, 2, 3, 4, 5, 3};

(gdzie 3 występuje 2 razy) dla tab[5] dostaniesz 2 zamiast 5.
Przede wszystkim powiedz co próbujesz osiągnąć bo wszystko wskazuje na to, że zabierasz się do problemu od złej strony.

0

"Może Tobie chodzi o to by ze Stringu "tab[63]" wyciąć to co jest między nawiasami kwadratowymi."
z tym bym sobie poradził

"Po pierwsze, tab[63] może być typu prostego, np. int i nie można na rzecz tab[63] wywołać żadnej metody.
Po drugie, jeśli nawet tab[63] jest obiektem, to ten obiekt nie wie czy siedzi w jakichś tablicach, a jeśli siedzi, to jaki ma indeks."

to chyba mi wyjaśniło wszystko. Po prostu nie da się tego wykonać

0

Pomijając cały bezsens pytania, nie wiem jak w Javie, ale ogólnie da się taka bzdurę zrobić, nawet bez tworzenia nowej tablicy obektów z tablicy bazowej, przykład w JS:

function nonsenseArrayProxy(arr) {
  return new Proxy(arr, {
    get(target, property) {
      if (property === 'raw') {
        return target;
      }
      return {
        index: Number(property),
        value: target[property]
      }
    }
  });
}

/* usage */
const arr = nonsenseArrayProxy(['foo', 'bar', 'baz']);

// get index:
console.log(arr[1].index); // => 1

// get value (two options):
console.log(arr[1].value); // => 'bar'
console.log(arr.raw[1]); // => 'bar'

// for loops use raw array:
arr.raw.forEach(element => console.log(element));

Powtarzam - nie ma to żadnego zastosowania, ot gimnastyka przed poniedziałkiem ;)

0

@Maciej Cąderek masz racje, do niczego nie było mi to potrzebne po prostu złe popatrzyłem na problem a jako że mam tendencje do komplikowania rzeczy to powstał ten wątek :)

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