Pierwszy program figury geometryczne.

Odpowiedz Nowy wątek
2017-09-12 20:01
0

Od 2 miesięcy próbuję napisać swoją pierwszą aplikację w JAVIE ( wiadomo nie dzień w dzień ) i nie umiem. Jestem "rozpłakany" nie wiem co zrobić nic mi się nie układa w całość.
Ogólnikowo w głowie wiem jak to powinno wyglądać ale szczegółowo jak przychodzi do napisania to nic nie wychodzi nie wiem co z czym.
Na początek aplikacja powinna sumować długości kilku figur (prostokąt, trapez i trójkąt) po osi X. Zajrzałem do książki zrobiłem kurs z codcademy ( zbyt trywialne ) nic mi nie pomaga nie wiem.
Proszę o pomoc jak to powinno wyglądać?

Pozostało 580 znaków

2017-09-20 22:59
0

@AreQ212:
Dodałem opcje "...kilku trójkątów". Reszta jutro bo za późno się zabrałem za to..
A co do "... lepsza struktura danych Lista" to chodzi Ci o taką tablicę? i w jakim celu miałbym jej użyć? Zamiast zapisywania wartości double do "z" i do "x" tak?

package simpleFrame;
import java.util.*;

import static java.lang.System.exit;
import static java.lang.System.out;

public class Main {
    public static void main(String args[]){
for (;;){
        Scanner in = new Scanner(System.in);
        out.print("Wybierz opcję : 1-Trojkat, 2-Prostokat, 0 - Exit: ");
        int choice = in.nextInt();
        switch (choice){
            case 1 :

                Figura[] trojkat = new Figura[3];
                trojkat[0] = new Figura("pierwsza", 6, 6);

                break;

            case 2:
                Figura[] prostokat = new Figura[3];
                prostokat[0] = new Figura("druga", 5, 5);
                break;
            case 0: exit(0);
                 default: System.out.println("Cos poszlo nie tak!");

            //System.out.println("Suma długość po X:"+(trojkat[0].x +prostokat[0].x ) );

    }

}}}
edytowany 4x, ostatnio: paski zielone, 2017-09-20 23:14

Pozostało 580 znaków

2017-09-21 22:43
0

Coś nie tak tam wpisuje bo się nie kompiluje. Usunąłem string imie bo myslalem ze to jest problem ale nie.

Error:(36, 10) java: constructor Figura in class simpleFrame.Figura cannot be applied to given types;
required: double,double
found: no arguments
reason: actual and formal argument lists differ in length

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

for (;;){
        Scanner in = new Scanner(System.in);

    ArrayList<Figura> list = new ArrayList<>();

    out.print("Wybierz opcję : 1-Trojkat, 2-Prostokat, 0 - Exit: ");
        int choice = in.nextInt();
        switch (choice){
            case 1 :

                Figura[] trojkat = new Figura[3];
                trojkat[0] = new Figura(/*"pierwsza",*/ 6, 6);

                break;

            case 2:
                Figura[] prostokat = new Figura[3];
                prostokat[0] = new Figura(/*"druga",*/ 5, 5);
                break;
            case 0: exit(0);
                 default: System.out.println("Cos poszlo nie tak!");
list.add(new Figura()); // COŚ NIE TAK! Error 36

            //System.out.println("Suma długość po X:"+(trojkat[0].x +prostokat[0].x ) );

    }
    Figura[] trojkat = new Figura[list.size()];
    list.toArray(trojkat);
}}}

Pozostało 580 znaków

2017-09-21 22:56
0

Wywołujesz konstruktor bez parametrów a masz tylko jeden - z parametrami.
Dodaj bezparametrowy konstruktor jeśli taki chcesz używać.


Szacuje się, że w Polsce brakuje 50 tys. programistów

Pozostało 580 znaków

2017-09-21 23:09
0

Jestem też początkujący, jednak to chyba nawet lepiej bo pamiętam swoje problemy. Ogólnie poczytaj konkretnie o obiektowości i kup jakąś książkę odnośnie samego języka(nie musisz jej całej przerabiać bo zagadnienia do takiego projektu są opisane w kilku początkowych tematach a dodatkowo możesz coś na szybko poszukać w internecie), bo jeśli przez dwa miesiące masz takie problemy to po prostu za mało się przykładasz i zamiast poważnie zastanowić i zrozumieć przykłady, których jest wystarczająco w książce (w przeciwieństwie do kursu) to chcesz to zrobić na skróty "bo powinno działać" a tak się niestety nie da i tracisz jeszcze więcej czasu.Z własnego doświadczenia wiem, że jeśli naprawdę rozwiążesz sam taki problem, który jest dosyć łatwy to przygotujesz się do trudniejszych zadań które się pojawią w sumie dosyć szybko. Nie chce, żebyś odebrał to jako krytykę i być może uznasz ,że nic nie wnoszę do tematu, ale ogólnie myślę, że główna trudność nie leży w samym projekcie tylko w Twoim podejściu.

Pozostało 580 znaków

2017-09-22 15:11
0

@mic1996: może i masz racje. Ale dzięki wam i dzieleniu się z wami kodem lepiej się czuje pisząc to

trochę Cię rozumiem bo kiedyś podobnie robiłem, dlatego właśnie ostrzegam przed tym innych ;) Powodzenia :) - mic1996 2017-09-22 15:21

Pozostało 580 znaków

2017-09-23 22:45
0

To jest bezsensu. Uzupełniłem sobie konstruktor w klasie Figura

public class Figura {
   String imie;
    double z;
    double x;

    public Figura (String imie, double z, double x  )
    {
        this.imie = "figurka";
        this.z = 5;
        this.x = 1;
}}

Więc już z obiektów trójkąt i prostokat chciałem powyrzucać z konstruktora

...
case 1 :

                Figura[] trojkat = new Figura[3];
                trojkat[0] = new Figura(*/ to chcialem wyrzucic */);
                ...
                break;
...

a tu nie mogę bo błąd jakiś. to po co mi ten konstuktor w klasie skoro i tak później w obiektach muszę znowu te pola wypełniać?
I tak to co wpisuje w konstruktorze obiektu nie działa bo "ciągnie" dane z klasy.

edytowany 3x, ostatnio: paski zielone, 2017-09-23 22:48

Pozostało 580 znaków

2017-09-23 23:04
1

Pisałem wcześniej, poczytaj o podstawach to są rzeczy banalne na które odpowiedź znajdziesz w pierwszym lepszy poradniku po prostu robisz błędy tak oczywiste, że to nie wynika nawet z jakiejś trudności tylko lekceważącego podejścia, jeśli już teraz tak zaczynasz to po prostu zastanów się czy na pewno chcesz to robić.

Odnośnie kodu, to podajesz jako argumenty x i z a później nawet ich nie używasz, bo odwołujesz się tylko do wartości z klasy. W konstruktorze są po to argumenty, żeby można było samemu ustalić te wartości przy tworzeniu obiektów, więc według mnie powinno być coś takiego:

this.x = x ; gdzie x jest parametrem przekazanym do konstruktora a tak przekazujesz parametr i nawet go nie wykorzystujesz, bo przypisujesz już jakieś wartości, pisze kolejny raz...poczytaj o podstawach, żebyś wiedział do czego to wszystko służy. A jeśli chcesz mieć konstruktor bez argumentów to musisz sam napisać oprócz tego z argumentami ten domyślny bez argumentów.

Proszę, żeby ktoś mnie poprawił, jeśli piszę głupoty ale uważam, że mam racje, jeśli chodzi o błędy.

Pozostało 580 znaków

2017-09-23 23:33
0

Ja zrozumiałem że w konstruktorze klasy podaje się właśnie wartości żeby już później przy tworzeniu obiektów nie trzebabylo tego robić ... Nawet był taki przyklad w cpp. Zresztą i tak to nie dziala.
A po za tym te wartości będą i tak wpisywane już w programie.
I chyba tak nie jest że mogę sobie w konstruktorze wpisać domyślne ale później w programie zdecydować że sobie wpisze inne

Pozostało 580 znaków

2017-09-23 23:48
0

Napisałem przykład który działa i pozwoli Ci zobaczyć mam nadzieję o co chodzi:

public class Figura
{
int x;
int y;

public Figura(int x, int y) //tutaj chcesz sobie sam ustawić współrzędne przy tworzeniu nowego obiektu, żeby nie tworzyć na przykład 10 klas z 
{                                     //różnymi współrzędnymi
    this.x = x;
    this.y = y;
}

public Figura() //tutaj masz ustalone współrzędne w konstruktorze domyślnym ale jak już chcesz tak robić to lepiej mieć pusty konstruktor domyślny
{                       // czyli public Figura(){}  i ustawić te wartości na samej górze przy x i y
    this.x = 1;
    this.y = 10;
}

public void wspolrzedne()
{
    System.out.println("x = " + this.x+"y = "+ this.y);
}

}
takie coś działa, czyli tam gdzie chcesz ustawić nowe wartości masz konstruktor z argumentami, przecież jak ustawisz sobie stałe wartości to figura będzie w sumie identyczna dlatego musisz się zastanowić jakiego konstruktora potrzebujesz.

public class Main
{

public static void main(String[] args)
{
    Figura figura1 = new Figura();
    figura1.wspolrzedne();

    Figura figura2 = new Figura(13,15);
    figura2.wspolrzedne();

}

}

edytowany 5x, ostatnio: mic1996, 2017-09-23 23:53
mam problem z umieszczeniem całego tekstu jako kod niestety ;p - mic1996 2017-09-23 23:53

Pozostało 580 znaków

2017-09-24 17:42
0

OK na dziś dziękuję za porady :) Już coś takiego miałem (albo nie) wyżej i nie o to mi chodzi, poszukam w książce ;)

edytowany 2x, ostatnio: paski zielone, 2017-09-24 17:44

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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