Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz
  • 0

Szukanie błędu w kodzie


pixel1335

Pytanie

Opublikowano

Kod:

List<String> ha = Main.getInstance().getConfig().getStringList("ha");
public boolean onCommand(CommandSender s, Command cmd, String lab, String[] args) {
    if (lab.equalsIgnoreCase("admini")){
        for(String str : ha){
            s.sendMessage(str);
        }

Chciałbym aby wypisywało mi wszystkich HeadAdminów, problem jest taki że nic się nie dzieje. Czemu ?

9 odpowiedzi na to pytanie

Rekomendowane odpowiedzi

Opublikowano

Powiem Ci tak to jest cały kod xD uczę się pisać w javie i chciałem się nauczyć jak wypisać cała listę.

Klasa admini

package me.pixel.pinfo2.commands;

import me.pixel.pinfo2.Main;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;

import java.util.List;

public class administracja implements CommandExecutor {

    List<String> ha = Main.getInstance().getConfig().getStringList("administracja." + ".ha");
    List<String> opiekun = Main.getInstance().getConfig().getStringList("administracja." + ".opiekun");

    @Override
    public boolean onCommand(CommandSender s, Command cmd, String lab, String[] args) {
        if (lab.equalsIgnoreCase("admini")){
            s.sendMessage("§7=-=-=-=-=-=-=-=-=-=-=");
            s.sendMessage("§cHEAD ADMINI");
            for(String str : ha) {
                s.sendMessage("§6" + str);
            }
            s.sendMessage("§cOPIEKUNOWIE");
            for(String str : opiekun) {
                s.sendMessage("§6" + str);
            }
            s.sendMessage("§7=-=-=-=-=-=-=-=-=-=-=");
        }
        return false;
    }
}

Klasa Main

 

package me.pixel.pinfo2;

import me.pixel.pinfo2.commands.administracja;
import me.pixel.pinfo2.commands.help;
import me.pixel.pinfo2.commands.regulamin;
import me.pixel.pinfo2.commands.vip;
import org.bukkit.Bukkit;
import org.bukkit.plugin.java.JavaPlugin;

public class Main extends JavaPlugin{

    private static Main instance;

    public static Main getInstance(){
        return instance;
    }

    public void onEnable() {
        Bukkit.getLogger().info("Powinno dzialac ...");
        instance = this;
        saveDefaultConfig();
        getCommand("admini").setExecutor(new administracja());
    }
}

config.yml

administracja:
  ha:
    - 'Pixel1335'
    - 'Vogap'
  opiekun:
    - 'Pixel1335'
    - 'Vogap'

plugin.yml

name: pInfo2
version: 1.0.0
main: me.pixel.pinfo2.Main
commands:
  admini:
Opublikowano

Skoro nic się nie dzieje to zapewne lista jest pusta... Ustawiaj ją w konstruktorze, a w głównej klasie go wywołuj.

Opublikowano

Dobra nie ważne, jestem głupi. A możesz mi powiedzieć jak mam wyświetlić całą listę ? Z tego co wiem to powinno się robić pętlą foreach ale mi jakoś nie chce działać ... albo znowu czegoś nie widze

Opublikowano

Ciężko dowiedzieć się czegokolwiek z tak krótkiego listingu, podaj jakiś pełniejszy kod. Powodów może być wiele:

- wspomniany brak wpisów w tablicy.

- lab nie jest równe "admini".

Lista jest dobrze wyświetlana, foreach to jeden ze sposobów. Nie widzę w samej pętli nic złego, napisy powinny się wyświetlić - o ile kod w ogóle wykonuje się w tym miejscu.

W takim przypadku chętnie użyłbym debugera i sprawdził wartości argumentów tudzież zmiennych w ifie.

Jak chcesz, żebyśmy mogli ci pomóc lepiej, przydałoby się nieco więcej kodu.


Pomagam w projektach dotyczących programowania (C++/C/Java/C#/inne). Jak masz jakiś problem, napisz do mnie, wspólnie poszukamy rozwiązania ;).

Opublikowano
Dnia 15.07.2017 o 10:38, Lesteross napisał:

Pierwsze: nie wiem po co w tym miejscu "+". Konkatencja dwóch literałów napisowych jest bezsensu, w większości przypadków (czytaj: po co robić "a" + "b", skoro można zrobić "ab"?).
Drugie, związane z pierwszym: jak już złączysz te dwa (np "administracja..ha") to nie powinna być tam czasami jedna kropka między administracja a ha?

Co do reszty to nie wiem. Środowisko nie jest mi jakoś specjalnie znane. Możliwe, że wstąpi tu ktoś, kto zna się bardziej na rzeczy niż ja.

Masz rację, po naprawieniu buga powinno działać.

I mam takie pytanie, OPie, z czego Ty się tej całej Javy uczysz? Polecałbym Ci się zastanowić nad programowaniem obiektowym, bo na dłuższym dystansie spadniesz z rowerka z powodu lawiny nieuporządkowanego kodu.

Opublikowano
16 godzin temu, Woulfiee napisał:

Masz rację, po naprawieniu buga powinno działać.

I mam takie pytanie, OPie, z czego Ty się tej całej Javy uczysz? Polecałbym Ci się zastanowić nad programowaniem obiektowym, bo na dłuższym dystansie spadniesz z rowerka z powodu lawiny nieuporządkowanego kodu.

Java to nie jest programowanie obiektowe? Oszukali mie :(. 

Ale tak serio to myślałeś nad tym co piszesz? Najlepiej uczyć się programowania obiektowego programując w języku obiektowym. Oczywiście, część kwestii programowania obiektowego jest uniwersalna i warto na ich temat wiedzieć trochę więcej, ale przy każdym kursie jakiegokolwiek języka programowania te rzeczy są wspominane.


Pomagam w projektach dotyczących programowania (C++/C/Java/C#/inne). Jak masz jakiś problem, napisz do mnie, wspólnie poszukamy rozwiązania ;).

Opublikowano
1 minutę temu, Lesteross napisał:

Java to nie jest programowanie obiektowe? Oszukali mie :(. 

Ale tak serio to myślałeś nad tym co piszesz? Najlepiej uczyć się programowania obiektowego programując w języku obiektowym. Oczywiście, część kwestii programowania obiektowego jest uniwersalna i warto na ich temat wiedzieć trochę więcej, ale przy każdym kursie jakiegokolwiek języka programowania te rzeczy są wspominane.

 

Masz rację, nie oszukali Cię ;) tylko tacy ludzie, którzy oglądają poradniki do jakichś API zazwyczaj nie ogarniają, w jakim języku programują a tym bardziej nie ogarniają, że wypada chociaż podstaw się nauczyć, a później się bawią z tysiącami linijek niepotrzebnego kodu i tworzą pięćset nowych odwołań do tego samego obiektu. Np. używanie kostruktora new Rank("HeadAdmin", ...) może wiele ułatwić, ale jak (chyba) widać (chyba) nie wszyscy chcą o tym wiedzieć.

Jakimś specem od Javy nie jestem, więc ustępuję tutaj Tobie. Jak się mylę w czymkolwiek, to mnie popraw.

Pozdrowiam :)

Opublikowano
12 godzin temu, pixel1335 napisał:

List<String> ha = Main.getInstance().getConfig().getStringList("administracja." + ".ha");
List<String> opiekun = Main.getInstance().getConfig().getStringList("administracja." + ".opiekun");

Pierwsze: nie wiem po co w tym miejscu "+". Konkatencja dwóch literałów napisowych jest bezsensu, w większości przypadków (czytaj: po co robić "a" + "b", skoro można zrobić "ab"?).
Drugie, związane z pierwszym: jak już złączysz te dwa (np "administracja..ha") to nie powinna być tam czasami jedna kropka między administracja a ha?

Co do reszty to nie wiem. Środowisko nie jest mi jakoś specjalnie znane. Możliwe, że wstąpi tu ktoś, kto zna się bardziej na rzeczy niż ja.


Pomagam w projektach dotyczących programowania (C++/C/Java/C#/inne). Jak masz jakiś problem, napisz do mnie, wspólnie poszukamy rozwiązania ;).

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...