Czy w Javie można zwrócić tablice alfabetu lub indeks litery, w inny sposób niż ręcznie?

0

Ponieważ sprawdziłam najpierw w Intelij Character. - brak metody typu getAllChars albo getIndex. W dokumentacji widze pustke. Sprawdziłam na stacku

https://stackoverflow.com/questions/17575840/better-way-to-generate-array-of-all-letters-in-the-alphabet
Najwyżej punkowana odpowiedz

char[] alphabet = {'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'};

Nie da sie tego zrobić prościej, przez 1-linijkową metode?

3

@lambdadziara: nie wiem jak dla Ciebie, ale dla mnie najwyżej punktowana odpowiedź jest trochę inna.

0

Czy moge jeszcze w tym temacie zadać pytanie? :) Kod ten implementuje kratke długości 8x8 za pomocą drawLines w Swingu. Chciałam dodać dodatkowe wyzwanie - więc dałam współrzedne randomowe. Problem jest w linijce squareSide, która definiuje długość boków całego kwadratu. Działa przy statycznej długości 240 (czyli x1+240=x2 w przypadku poziomych kresek i y1+240=y2 w przypadku pionowych). Potem w petlii robie x1 i x2+= 30 a w drugiej y1 i y1 += 30, ponieważ 240/8 = 30, równe kratki, wszystko sie zgadza wiadomo o co chodzi.Jednak wszystko sie rozkrzacza, gdy próbuje ustawić bok kwadratu jako randomowy int. Myslalam, że to może przez konwersje, więc rzutuje tam do double i flooruje/rounduje - nic jednak nie pomaga na podzielenie randomowego boku na 8 rownych kratek, nie wiem w sumie dlaczego. Oto kod


import javax.swing.*;
import java.awt.*;
import java.util.Random;


public class GridWithLines8x8 extends JPanel {

    void drawLines(Graphics g, int x1, int y1, int x2, int y2) {
        Graphics2D g2d = (Graphics2D) g;


        g2d.drawLine(x1, y1, x2, y2);


    }

    public void paintComponent(Graphics g) {
        super.paintComponent(g);
        Random random = new Random();
        int x1 = random.nextInt(600);
        int y1=random.nextInt(600);
        int x2 = x1;
        int squareSide = random.nextInt(240);
        int y2 = y1 + squareSide;
        for (int i = 0; i < 8; i++) {
            drawLines(g, x1, y1, x2, y2);
            x1 += Math.round((double)squareSide/8);
            x2 += Math.round((double)squareSide/8);
        }
        for (int j = 0; j < 9; j++) {
            drawLines(g, x1 - squareSide, y1, x1 - (int)Math.round((double)squareSide/8), y1);
            y1 += Math.round((double)squareSide/8);
            y2 += Math.round((double)squareSide/8);
        }
    }
}

Oraz metoda main:

import javax.swing.*;

public class GridWithLines8x8Main  {
    public static void main(String[] args) {
        JFrame frame = new JFrame("Grid 8x8 with lines");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(2000,1000);
        GridWithLines8x8 grid = new GridWithLines8x8();
        frame.add(grid);
        frame.setVisible(true);
    }
}

EDIT: teraz dziala, choc zdarzaja sie bledy, np wychodzi kwadrat wychodzi poza ramke, albo lekko rozkrzacza sie przy malych rozmiarach :)

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