Jump to content



Java Error


afracten

Recommended Posts

μου στειλανε ενα java file το οποιο, το κανανε compile πανω σε mac.

oταν μπω στο cmd και γραψω "java <file name>" μου βγαζει αυτο

javaerror.jpg

εχει προβλημα το JDK μηπως?

Link to comment
Share on other sites

ακομη κατι. εγραψα αυτο το απλο προγραμμα στην java.

public class ATM{

public void welcomeaccountscreen(){

System.out.println("Welcome to Online ATM Banking.");

int balance = -1;

System.out.println("How much do you want in your account");

while(balance < 0)

{

balance = ToolBox.readIntFromCmd();

if (balance<0)

{

System.out.println("You can not enter a negative number.");

System.out.println("Please re-enter your amount!");

}

}

System.out.println("What do you want to do?");

System.out.println("1 : Withdraw");

System.out.println("2 : Deposit");

System.out.println("3 : Inquire");

System.out.println("4 : Quit");

int choice = ToolBox.readIntFromCmd();

while(choice!=4){

if (choice==1){

System.out.println("********Withdrawal********");

System.out.println("Enter the amount you want to withdrawal.");

int withdrawal = ToolBox.readIntFromCmd();

balance = balance - withdrawal;

}

if (choice == 2){

System.out.println("********Deposit********");

System.out.println("Enter the amount you want to deposit.");

int deposit = ToolBox.readIntFromCmd();

balance = balance + deposit;

}

if (choice == 3){

System.out.println("Your Balance is");

System.out.println(balance);

}

System.out.println("What do you want to do?");

System.out.println("1 : Withdraw");

System.out.println("2 : Deposit");

System.out.println("3 : Inquire");

System.out.println("4 : Quit");

choice = ToolBox.readIntFromCmd();

}

if (choice == 4){

System.out.println("Goodbye!!!");}

}

public static void main(String[] args){

ATM myAtm = new ATM();

myAtm.welcomeaccountscreen();

}}

λοιπον. θελω αυτο να το κανω method,

System.out.println("********Withdrawal********");

System.out.println("Enter the amount you want to withdrawal.");

int withdrawal = ToolBox.readIntFromCmd();

balance = balance - withdrawal;

και να το καλω, withdrawal(); πως μπορω να το κανω?

Link to comment
Share on other sites

Νομίζω ότι θες κάτι σαν το παρακάτω.


public class ATM {
// Global Variables
int balance = -1;

public void welcomeaccountscreen() {

boolean quiting = false;
int choice = -1;

System.out.println("Welcome to Online ATM Banking.");
initializeBalance();

while (!quiting) { // will exit if quiting is true (case 4)
System.out.println("What do you want to do?");
System.out.println("1 : Withdraw");
System.out.println("2 : Deposit");
System.out.println("3 : Inquire");
System.out.println("4 : Quit");
choice = ToolBox.readIntFromCmd();

switch (choice) {
case 1:
withdrawal();
break;
case 2:
deposit();
break;
case 3:
printBalance();
break;
case 4:
quiting = true; //making sure that you exit the while loop
System.out.println("Goodbye!!!");
break;
default: // if pressed sth else
System.out.println("You can only select between 1-4.");
break;
}
}
}

private void initializeBalance() {
System.out.println("How much do you want in your account");
while (balance < 0) {
balance = ToolBox.readIntFromCmd();

if (balance < 0) {
System.out.println("You can not enter a negative number.");
System.out.println("Please re-enter your amount!");
}
}

}

private void withdrawal() {
System.out.println("********Withdrawal********");
System.out.println("Enter the amount you want to withdrawal.");

int withdrawal = ToolBox.readIntFromCmd();

balance = balance - withdrawal;
}

private void deposit() {
System.out.println("********Deposit********");
System.out.println("Enter the amount you want to deposit.");

int deposit = ToolBox.readIntFromCmd();
balance = balance + deposit;
}

private void printBalance() {
System.out.println("Your Balance is");
System.out.println(balance);
}

public static void main(String[] args) {

ATM myAtm = new ATM();
myAtm.welcomeaccountscreen();

}
}

Όπως βλέπεις έχω βάλει private τις μεθόδους γιατί χρησιμοποιούνται αποκλειστικά και μόνο από αυτήν την κλάση. Επίσης, καλό είναι να χρησιμοποιείς switch όταν έχεις πολλά if then else που απλά ελέγχουν την τιμή μιας μεταβλητής. Τέλος, έβαλα το balance σαν global μεταβλητή, για να το βλέπουν όλες οι μέθοδοι της κλάσης και να μην χρειάζεται να περνιέται σαν όρισμα. Αν δεις χρησιμοποιώ και μια boolean μεταβλητή για να βγω από την while ώστε να γλιτώσω μία ακόμα if. Αν έχεις κάποια απορία, ρώτα :D

Όσο για την αρχική απορία, ίσως αυτό σε βοηθήσει.

Link to comment
Share on other sites

Ειναι το περίφημο διαπλατφορμικό run της Java. Θα τρέχει παντού μας έλεγαν.... :snap:

Μια χαρά τρέχει παντού.

@tragikos

Σίγουρα υπάρχει το αρχείο C:\MandelbroSetMain.class ? (Δεν θα έπρεπε να λέγεται MandelbrotSetMain ? )

Link to comment
Share on other sites

Μια χαρά τρέχει παντού.

Ναι, αλλά πως...? αλλάζοντας το jre ανάλογα με την εφαρμογή που θες να τρέξεις...?

έκανε update το jre η java και σταμάτησε να δουλεύει το interface του cisco, γιατί (αν θυμάμαι καλά) είχε αλλάξει ο αριθμός των παραμέτρων που πέρναγαν σε ένα function... ok, δεν λέω ότι είναι η συντέλεια του κόσμου, αλλά δεν μπορείς να γράψεις mainstream λογισμικό που θα το δώσεις σε έναν πελάτη και θα τον ξεχάσεις... θα έχεις μόνιμα μια διαδικασία support για προβλήματα που δεν είναι δικά σου... από την εμπειρία μου, οποιοδήποτε framework είναι στηριγμένο σε runtime (java, flash, .net κλπ) αυτό που κερδίζει σε portability, το χάνει με τον χειρότερο τρόπο σε post-procedures που έχουν να κάνουν κυρίως με υποστήριξη και επίλυση προβλημάτων... καλώς ή κακώς, το native code είναι το βέλτιστο και ας είναι το πιο περιοριστικό, όσων αφορά τις αρχιτεκτονικές (software & hardware)...

Link to comment
Share on other sites

Ναι, αλλά πως...? αλλάζοντας το jre ανάλογα με την εφαρμογή που θες να τρέξεις...?

έκανε update το jre η java και σταμάτησε να δουλεύει το interface του cisco, γιατί (αν θυμάμαι καλά) είχε αλλάξει ο αριθμός των παραμέτρων που πέρναγαν σε ένα function... ok, δεν λέω ότι είναι η συντέλεια του κόσμου, αλλά δεν μπορείς να γράψεις mainstream λογισμικό που θα το δώσεις σε έναν πελάτη και θα τον ξεχάσεις... θα έχεις μόνιμα μια διαδικασία support για προβλήματα που δεν είναι δικά σου... από την εμπειρία μου, οποιοδήποτε framework είναι στηριγμένο σε runtime (java, flash, .net κλπ) αυτό που κερδίζει σε portability, το χάνει με τον χειρότερο τρόπο σε post-procedures που έχουν να κάνουν κυρίως με υποστήριξη και επίλυση προβλημάτων... καλώς ή κακώς, το native code είναι το βέλτιστο και ας είναι το πιο περιοριστικό, όσων αφορά τις αρχιτεκτονικές (software & hardware)...

Ως προς τα post-procedures θα διαφωνήσω. Αν και η Java πολεμήθηκε όσο τίποτα άλλο από τη Microsoft, την Apple, και τους "υποστηρικτές" του GNU το ποσοστό του portability είναι αρκετά μεγάλο σε σχέση με την ποιότητα του κώδικα πολλών βαριεστημένων προγραμματιστών. Εφόσον κάνεις compile το distributed αρχείο θα πρέπει να τρέχει και σε νεώτερες εκδόσεις του JRE. Παράλληλα δεν χρησιμοποιείς undocumented classes/methods και προσέχεις τις extreme περιπτώσεις όπου χρειάζεται migration. Τώρα αν κάποια εταιρεία δεν ξέρει να προγραμματίσει σωστά ένα web interface με applets ή έχει ανανεώσει τον κώδικα από το 199x που (κακώς) έπρεπε να πάρει υπόψιν το Microsoft JVM τότε καλό θα ήταν να προσθέσει στο software development process και το στάδιο της συντήρησης (το οποίο χρειάζεται είτε έχεις native code είτε όχι).

Link to comment
Share on other sites

H αλήθεια είναι ότι η cisco δεν φημίζεται για τους προγραμματιστές της...

Η άποψή μου είναι ότι η ms απέτυχε με το .net να φτιάξει την δική της java και σίγουρα η java είναι καλύτερη από το .net, αλλά αυτό στην σύγκριση μεταξύ τους... η java, όπως ανέφερα και πιο πριν, είναι είναι εργαλείο το οποίο είναι καλό όσον αφορά το multiplatform, αλλά σε επαγγελματικό development δεν συνίσταται σε καμία περίπτωση... είναι άλλο πράγμα να δίνεις ένα .exe σε έναν πελάτη σου και να μην σε νοιάζει σε τι windows θα το τρέξει και άλλο να πρέπει να κάνεις μια διαδικασία ώστε να το τρέξει ο πελάτης σου ή κάποια στιγμή που θα σε πάρει τηλέφωνο και θα έχει πρόβλημα, να πρέπει να κάτσεις να βρεις τι τρέχει με τον jvm και τι τρέχει με το λειτουργικό του... η προστασία που σου προσφέρει το windows api, όσο το χειρίζεσαι ο ίδιος απ' ευθείας, χωρίς την μεσολάβηση ενός συνεχώς μεταβαλλόμενου interpreter, είναι καθοριστική... και το πιο σημαντικό είναι ότι οποιαδήποτε στιγμή, ο πάροχος του interpreter μπορεί να κάνει μια αλλαγή (προς το καλύτερο) η οποία όμως σημαίνει ότι πρέπει να πιάσεις τον κώδικα σου, που τον έχεις ξεχάσει μετά από χρόνια για να ξεκινήσεις το migration, πράγμα που σημαίνει χρόνο και χρήμα... έτσι δεν έκανε και η adobe με την AS3 και κοντέψαμε να πάθουμε εγκεφαλικό...? παίζει να αυτοκτόνησαν κάποιοι δεινόσαυροι που χρειάστηκε να κάνουν migration από AS2 σε AS3...

Γι' αυτό επιμένω, ότι όταν γράφεις κώδικα (τουλάχιστον σε επαγγελματικό επίπεδο), μένεις με το api και τα libs του λειτουργικού, που ξέρεις ότι δεν πρόκειται να αλλάξουν (τουλάχιστον όχι σε μεγάλο βαθμό)...

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Δημιουργία...

Important Information

Ο ιστότοπος theLab.gr χρησιμοποιεί cookies για να διασφαλίσει την καλύτερη εμπειρία σας κατά την περιήγηση. Μπορείτε να προσαρμόσετε τις ρυθμίσεις των cookies σας , διαφορετικά θα υποθέσουμε ότι είστε εντάξει για να συνεχίσετε.