Java kompilacja programu[Tablice]

0

Witam.

Mam problem z inicjacją tablicy w switch casie.
Jestem początkujący i nie mam zielonego pojęcia jak się za to zabrać.
Mam zbudować program z menu, w którym ma być zdefiniowany rozmiar tablicy, dodawanie napisu do tablicy, wyświetlanie tablicy, usuwanie napisu, dodawanie napis w dowolnym miejscu, pomniejszenie tablicy, i pomniejszenie z kompresją, czyli żeby nie było wolnych miejsc.
Kompilator mówi że nie inicjuje mi tablicy przy wpisywaniu to niej napisu.

Proszę o pomoc.

package com.company;
import java.util.Scanner;
public class Main {


    class tablica{

        public  void tablice(int wielkosc) {
            int dlugosc;
            String tab[] = new String[0];
            for(dlugosc=0; dlugosc<wielkosc; dlugosc++){
               tab=new String[wielkosc];
            }




        }

}





















    public static void main(String[] args) {

        int menu;
        int a;


        do{
            System.out.println("1.Stworz tablice");
            System.out.println("2.Wprowadz napis");
            System.out.println("3.Wyswietl tablice");
            System.out.println("4.Powieksz tablice");
            System.out.println("5.Usun napis");
            System.out.println("6.Pomniejsz tablice");
            System.out.println("7.Wprowadz napis w wolne miejsce ");
            System.out.println("8.Pomniejsz z kompresja");
            System.out.println("9.Koniec");

            Scanner scanner=new Scanner(System.in);
            menu=scanner.nextInt();
            switch(menu){
                case 1:

                    String tab[]=new String[0];
                    System.out.println("Podaj rozmiar tablicy");
                    int wielkosc=scanner.nextInt();
                    for(int i=0 ; i<wielkosc ; i++) {
                        String tablica[] = new String[wielkosc];



                      
                    }
break;

		case 2: 

			System.out.println("Wprowadz napis");
                        String napis=new String();
                        napis=scanner.nextLine();
                        tab[0]=napis;









                case 3:







            }




        }
        while(menu!=9);
    }
}
```java
0
public  void tablice(int wielkosc) {
            String tab[] = new String[wielkosc];
        }

Tak wygląda prawidłowa inicjalizacja tablicy statyczne. Nie wiem co kombinowaleś.

0

Dzięki śliczne, mam jeszcze pytanie odnośnie usuwania danych z tablicy, jak się do tego odwołać?

0

Jeśli operujesz na zwykłych tablicach, to musisz dokonać następujących działania:

  1. Tworzysz tablice o jeden mniejszą
  2. Przepisu zawartość z wyjątkiem wybranego elementu
  3. Przypisujesz do starej tablicy nową.
0

Nie mam pojęcia jak sobie z tym poradzić, nie znajduje mi tablicy w drugim casie.
Może mi ktoś pokazać jak to powinno wyglądać, w sensie drugi case i metody do niego?

package com.company;
import java.util.Scanner;
import java.util.InputMismatchException;
public class Main {


   public static class tablicee {

       public void tablice(int wielkosc) {
           String tab[] = new String[wielkosc];
       }
   }

   public static class zdanko{
       private static Object zdanko;

       public String napis(String napis) {
           tablicee zdanie = new tablicee();
           return napis;
   }
    public static void main(String[] args) {

        int menu;
        int a;

        do{
            System.out.println("1.Stworz tablice");
            System.out.println("2.Wprowadz napis");
            System.out.println("3.Wyswietl tablice");
            System.out.println("4.Powieksz tablice");
            System.out.println("5.Usun napis");
            System.out.println("6.Pomniejsz tablice");
            System.out.println("7.Wprowadz napis w wolne miejsce ");
            System.out.println("8.Pomniejsz z kompresja");
            System.out.println("9.Koniec");

            Scanner scanner=new Scanner(System.in);
            menu=scanner.nextInt();
            switch(menu){
                case 1:

                    String tablica[]=new String[0];
                    System.out.println("Podaj rozmiar tablicy");
                    int wielkosc=scanner.nextInt();
                    for(int i=0 ; i<wielkosc ; i++) {
                        String tab[] = new String[wielkosc];

                    }
                    break;

                case 2:
                    System.out.println("Podaj napis który chcesz umiescic w tablicy");
                    String napis=scanner.nextLine();
                   ** tab[0]=napis;**
                    








                case 3:

            }

        }
        while(menu!=9);
    }
}}
```java
0

Jest ktoś w stanie pomóc? Muszę ogarnąć to na jutro, a stoję w miejscu.

0

Pętle i tablice to podstawy podstaw w Javie. Poczytaj trochę o tym a następnie walcz. Bo na chwilę obecną wygląda jakbyś robił wszystko na ślepo.
Przejrzyj te dwa artykuły:

https://www.samouczekprogramisty.pl/tablice-w-jezyku-java/
https://www.samouczekprogramisty.pl/petle-i-instrukcje-warunkowe-w-jezyku-java/

Aby dodać obiekt do tablicy, musisz sie dobrać do elemntu tablicy o indeksie i, a następnie przypisac Twój obiekt który chcesz tam wrzucić: tab[i] = obiekt;

0

Tak z ciekawości, możesz wykorzystywać listy w tym zadaniu czy nie? Bo trochę ułatwiają sprawę (na przykład podczas operacji kompresji), ale i bez tego dało radę - mi wyszło około 160 linii kodu (bez obsługi błędnie podanych indeksów). Jeśli masz pytania - wal śmiało, coś pomożemy ;)

0

Proszę bardzo implementacja dla klasy Person:

interface ArrayService<T> {
    void add(T t);
    void remove(int idx);
    void update(T t, int idx);
    T get(int idx);
    int size();
class MyArray implements ArrayService implements ArrayService<Person> {

	private Person[] array;

	public PeopleArray() {
		this(0);
	}
	
	public PeopleArray(int n) {
		this.array = new Person[n];
	}

	public void add(Person p) {
		Person[] newArray = new Person[this.array.length + 1];

		for (int i = 0; i < this.array.length; i++) {
			newArray[i] = this.array[i];
		}
		newArray[newArray.length - 1] = p;
		this.array = newArray;
	}

	public void remove(int idx) {
		Person[] newArray = new Person[this.array.length - 1];

		for (int i = 0; i < this.array.length; i++) {
			if (i < idx) {
				newArray[i] = this.array[i];
			} else if (i > idx) {
				newArray[i-1] = this.array[i];
			}
		}
		this.array = newArray;
	}
	
	public void update(Person p, int idx) {
		this.array[idx] = p;
	}
	
	public Person get(int idx) {
		return this.array[idx];
	}
	
	public int size() {
		return this.array.length;
	}
	
	@Override
	public String toString() {
		String result = "";
		for (Person p : array) {
			result = String.join("\n", result, p.toString());
		}
		return result;
	}
}

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