Instrukcje zamiast for?

0

Witam. Mam problem z jednym zagadnieniem, które muszę opanować. Za pomocą jakiej instrukcji nie używając pętli for mogę utworzyć tablicę i wypełnić ją danymi a potem jaką instrukcją odczytać i wyświetlić te dane z tablicy?

0

Możesz użyć pętli while albo do while (nie wiem czy w javie jest jakiś foreach albo odpowiednik phpowego array_map()).

0

tylko goto

0

O rekurencji słyszał?
Prosty przykład:

import java.util.Arrays;
import java.util.function.Supplier;

public class Recursion {
	
	public static void main(String[] args) {
		
		final String[] array = new String[20];
		initializeArray(0, Recursion::getNextValue, array);
		Arrays.stream(array).forEach(System.out::println);
	}
	
	private static <T> T[] initializeArray(final int currentElement, final Supplier<T> supplier, final T[] array) {
		if (currentElement >= array.length) {
			return array;
		}
		else {
			array[currentElement] = supplier.get();
			return initializeArray(currentElement + 1, supplier, array);
		}
	}
	
	private static String getNextValue() {
		return "S";
	}
}
0
Integer[] arr = new Integer[10]; //deklaracja tablicy
Arrays.fill(arr, 1);  // wypelneinie jedynkami
Arrays.stream(arr).forEach(System.out::println); // wypisanie

Da się bez for i while :)

0

Można jednym stringiem wypełnić całą tablicę i wypisać jako string, w końcu string to też tablica, ale charów :D

Lecz wypełnienie tablicy intów charem, będzie zajmowało każde 4 znaki stringa jednego inta i ograniczenie tylko do printowalnych znaków.

0

Ogólnie wszystkie metody typu for, while, goto itp. działają na zasadzie jmpów, ale jest jedna metoda, która nie używa tego.

Jest nim kopiowanie vektorowe w assemblerze.

0
  1. GOTO (jeśli występuje w Javie)
  2. Rekurencja
  3. Kopiowanie bufora pamięci - nie wiem, jak pod tym względem wygląda Java. Ale generalnie chodzi o to, żeby zarezerwować sobie odpowiednio duży bufor, a potem go zapełnić danymi (np. kopiując dane z innego bufora)

Chyba, że masz powiedziane, że możesz posługiwać się pętlami, tylko nie for. No to wtedy zostają Ci inne pętle, np. while.

0
mdolata napisał(a):
Integer[] arr = new Integer[10]; //deklaracja tablicy
Arrays.fill(arr, 1);  // wypelneinie jedynkami
Arrays.stream(arr).forEach(System.out::println); // wypisanie

Da się bez for i while :)

Fajna metoda tylko, jak zmienić wypełnienie jedynkami na zwiększanie np. o 1? skoro nie ma żadnego inta ani deklaracji

0
tiger77 napisał(a):
mdolata napisał(a):
Integer[] arr = new Integer[10]; //deklaracja tablicy
Arrays.fill(arr, 1);  // wypelneinie jedynkami
Arrays.stream(arr).forEach(System.out::println); // wypisanie

Da się bez for i while :)

Fajna metoda tylko, jak zmienić wypełnienie jedynkami na zwiększanie np. o 1? skoro nie ma żadnego inta ani deklaracji

Integer[] arr = new Integer[10];
IntStream.range(0, arr.length).forEach(i -> arr[i] = i );  // wypełnienie obiektami Integer o wartościach od 0 do 9
Arrays.stream(arr).forEach(System.out::println); // wypisanie
0
mdolata napisał(a):
tiger77 napisał(a):
mdolata napisał(a):
Integer[] arr = new Integer[10]; //deklaracja tablicy
Arrays.fill(arr, 1);  // wypelneinie jedynkami
Arrays.stream(arr).forEach(System.out::println); // wypisanie

Da się bez for i while :)

Fajna metoda tylko, jak zmienić wypełnienie jedynkami na zwiększanie np. o 1? skoro nie ma żadnego inta ani deklaracji

Integer[] arr = new Integer[10];
IntStream.range(0, arr.length).forEach(i -> arr[i] = i );  // wypełnienie obiektami Integer o wartościach od 0 do 9
Arrays.stream(arr).forEach(System.out::println); // wypisanie

IDE podkresla mi IntStream na czerwono. Nie brakuje przypadkiem jakiejś bibloteki?

1

try - catch oczywiście :-)
też zamiast for działa

Mały przykład:

import java.util.function.Consumer;

public class A {
    public static void main(String[] args) {

        final int[] tablica = new int[100];
        try {
            azDoPorzygu(tablica, 0, index ->tablica[index] = index*2 );
        } catch (Exception e1) {
            try {
                azDoPorzygu(tablica, 0, index -> System.out.println(tablica[index]));
            } catch (Exception e2) {
                System.out.println("Dziekuje.");
            }

        }
    }

    static void azDoPorzygu(int[] t,  int index, Consumer<Integer> coRobic) {
        coRobic.accept(index);
        azDoPorzygu(t, index+1, coRobic);
    }
}

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