Zum Inhalt springen

Code ok ?


LukeGee

Empfohlene Beiträge

Hallo,

bin C# Umsteiger und habe mit Java frisch angefangen.

Habe zum "reinkommen" versucht ein kleines Programm zu schreiben, das die Streckung von Formen berechnet. (ganz banal).

Es funktioniert ganz gut, aber vielleicht könnte sich den Code hier mal jemand durschauen und sagen, was ich besser machen könnt.

Hier der Code:


/*

 * Main.java

 *

 * Created on 21. Februar 2007, 09:45

 *

 * To change this template, choose Tools | Template Manager

 * and open the template in the editor.

 */


package streckfaktor032;

import java.io.*;

/**

 *

 * @author lukas

 */

public class Main {


    /** Creates a new instance of Main */

    public Main() {

    }


    /**

     * @param args the command line arguments

     */

    public static void main(String[] args) {

        BufferedReader in = new BufferedReader(new InputStreamReader(System.in));


        try {

            System.out.println("Wieviele Ecken hat die zu streckende Form ?");

            String a = in.readLine();

            int a_ = Integer.parseInt(a);

            float[] side = new float[a_];


            System.out.println("Geben Sie den Streckfaktor an: ");

            String k = in.readLine();

            float k_ = Float.parseFloat(k);


            float[] finish = new float[a_];


            for (int i = 0; i<a_; i++) {

                System.out.println("Geben Sie nun die Laenge für die Seite " + (i+1) + " ein.");

                String g = in.readLine();

                side[i] = Float.parseFloat(g);


                finish[i] = side[i]*k_;

            }

            System.out.println("Die gestreckte Form hat folgende Maße: ");

            for (int i = 0; i<a_; i++) {

                System.out.println("Seite " + (i+1) + " = " + finish[i]);

            }

        } catch (Exception e) {

            System.out.println("! EIN FEHLER IST AUFGETRETEN !");

        }

    }


}


Danke.

MfG Luke

Link zu diesem Kommentar
Auf anderen Seiten teilen


/*

 * Main.java

 *

 * Created on 21. Februar 2007, 09:45

 *

 * To change this template, choose Tools | Template Manager

 * and open the template in the editor.

 */


package streckfaktor032;

import [COLOR="Red"]java.io.*[/COLOR];

/**

 *

 * @author lukas

 */

public class Main {


    [COLOR="Red"]/** Creates a new instance of Main */

    public Main() {

    }[/COLOR]


    /**

     * @param args the command line arguments

     */

    public static void main(String[] args) {

        [COLOR="Red"]BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); Hilfsklasse wäre eleganter[/COLOR]


        try {

            System.out.println("Wieviele Ecken hat die zu streckende Form ?");

            String [COLOR="Red"]a AAAAAA, in einer Woche weiss keiner was das ist[/COLOR] = in.readLine();

            int a_ = Integer.parseInt(a);

            float[] side = new float[a_];


            System.out.println("Geben Sie den Streckfaktor an: ");

            String k = in.readLine();

            float k_ = Float.parseFloat(k);


            float[] finish = new float[a_];


            for (int i = 0; i<a_; i++) {

                System.out.println("Geben Sie nun die Laenge für die Seite " + (i+1)[COLOR="Red"]i++ geht auch[/COLOR] + " ein.");

                String g[COLOR="Red"]das berühmte g, wie das a oder b[/COLOR] = in.readLine();

                side[i] = Float.parseFloat(g);


                finish[i] = side[i]*k_;

            }

            System.out.println("Die gestreckte Form hat folgende Maße: ");

            for (int i = 0; i<a_; i++) {

                System.out.println("Seite " + (i+1) + " = " + finish[i]);

            }

        } catch (Exception e) {

            [COLOR="Red"]System.out.println("! EIN FEHLER IST AUFGETRETEN !") was für ein Fehler ist den aufgetreten?[/COLOR];

        }

    }


}

was passiert wenn ich statt eines floats oder des ints ein skdfhgsajgjhdg eingebe oder blank enter ?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hm...ja, das Programm wird zwar abgefangen, aber ich könnt dafür ja ne if Anweisung oder was in der Art machen, die püft, ob der Wert gültig ist, oder ?

Jaja, immer diese A und Gs :D

Wie benennt man Variablen denn offiziell ? Ich meine "laengederseite" ist auch nicht grade das, was ich mir unter gut vorstelle.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Jaja, immer diese A und Gs

Wie benennt man Variablen denn offiziell ? Ich meine "laengederseite" ist auch nicht grade das, was ich mir unter gut vorstelle.

Dafür gibt's keine Spezifikation, an die man sich zu halten hat. Es gibt nur eine Regel: Verwende sprechende Namen. Wenn Du laengeDerSeite verwenden willst, tu' das. Ich würde zwar sideLength oder so bevorzugen, aber das ist ja Geschmackssache.

Und wie baba007 schon bemerkt hat: Einen leeren Konstruktor kannste Dir auch sparen. Und importiere nie ein ganzes Paket, sondern nur die benötigten Klassen. Weiterhin sieht ein ganzes Programm in einem try-Block wirklich blöd aus ;)

Link zu diesem Kommentar
Auf anderen Seiten teilen


            for (int i = 0; i<a_; i++) {

                System.out.println("Geben Sie nun die Laenge für die Seite " + (i+1)[COLOR="Red"]i++ geht auch[/COLOR] + " ein.");

Das ist verkehrt.

Wenn du i++ benutzt, wird der Schleifenzähler der for-Schleife einen hochgezählt. Du lässt also jede zweite Seite aus.

Bleib lieber bei (i+1)

Link zu diesem Kommentar
Auf anderen Seiten teilen

@baba007

Habe es auch mal probiert das ganze parse Zeug in ne Klasse und n Package zu machen und die aufzurufen. Habe allerdings Problemchen.

Hier n Beispiel für die KLasse:


package IOHelp;


import java.io.*;


public class getInt {

    private String eingabe;

    private int eingabe_;


    public int getInteger() {

        try {

            BufferedReader in = new BufferedReader(new InputStreamReader(System.in));

            eingabe = in.readLine();

            eingabe_ = Integer.parseInt(eingabe);

        } catch (Exception e) {

            //...

        }

        return eingabe_;

    }

}

Wenn ich sie in meiner Main Klasse so verwende:

IOHelp iohelp = new IOHelp();

int blabla = iohelp.getInteger();

...funktioniert es. wenn ich es jedoch mit dem Package will machen, nicht. Also ich habe oben ein

import IOHelp.*;

wenn ich es dann über

int blabla = IOHelp.getInteger();

aufrufen will, geht es nicht bzw. bekomme ich das getInteger() gar nicht zur Auswahl.

!?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Servus,

das kann beides nicht funktionieren.

Du willst eine Klasse IOHelp, deklarierst aber ein Package mit dem Namen. Die Klasse heißt wie die Methode heißen soll und die Methode gibt es auch noch. Das geht nicht.

Erzeuge eine Klasse in einem Package Deiner Wahl, instanziere sie und rufe die Methode auf. Bei einer solchen Util-Klasse kannst Du auch eine static-Methode definieren, dann brauchst Du keine Instanz, sondern kannst die Methode direkt auf der Klasse aufrufen.

Peter

Link zu diesem Kommentar
Auf anderen Seiten teilen

Sorry, hatte mich oben verschrieben. Es sollte so heißen:


getInt iohelp = new getInt();

int blabla = iohelp.getInteger();

So hats auch funktioniert, aber ich möchte es, dass ich nicht extra die Klasse initialisieren muss, sondern, auch so machen kann:

int blabla = IOHelp.getInteger();

Also über das Package irgendwie.

Also wie kann ich über das Package die Methode getInteger() der Klasse getInt aufrufen? so wie es baba007 auch gezeigt hat in seinem beispiel.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Das funktioniert, indem du das machst, was dir kingofbrain einem post vor deinem geraten hast. Das heißt du schreibst in deinen Methodenkopf noch ein "static" hinzu, dies bewirkt, dass du die methode dann einfach nur mit einem aufruf des klassennamens und dann durch nen punkt getrennt den methoden namen, aufrufen kannst.

bei baba007 ist es dort oben nämlich auch kein package, sondern die klasse, welche IOHelp heißt.

Der Methodenkopf würde dann bei dir folgendermaßen aussehen:


public static int getInteger() {

     [...]

}

und aufzurufen ist sie dann so:

int blabla = IOHelp.getInt.getInteger();

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...