Προς το περιεχόμενο

Απορία στην Java


Chris10

Προτεινόμενες αναρτήσεις

Δημοσ.

Όποιος γνωρίζει Java ας με βοηθήσει.

 

Πρέπει να δημιουργήσω ένα πρόγραμμα που να μετατρέπει τους βαθμούς Fahrenheit σε Celcious.Από 0 έως 50 βαθμούς Fahrenheit να βγάζει τον αντίστοιχο βαθμό Celcious.Γράφω τον παρακάτω κώδικα:

 

public static void main(String[] args) {

float f, c;

for (float f >= 0; f <= 50; f++) {

System.out.print ("Enter temperature degree in f");

System.out.println ("");

c = 5/9*(f-32);

return c;

}

}

 

και μου βγάζει μήνυμα ότι η σειρά που ξεκινά με την εντολή for είναι "illegal start of expression".Μήπως ξέρει κανείς τι κάνω λάθος;Ευχαριστώ εκ των προτέρων.

Δημοσ.
Δοκίμασε αυτό:

 

for (f >= 0; f <= 50; f++) {

 

Το δοκίμασα και μου βγάζει αυτή τη φορά μήνυμα "not a statement"

Δημοσ.
Το δοκίμασα και μου βγάζει αυτή τη φορά μήνυμα "not a statement"

 

Δοκίμασε for (f = 0; f <= 50; f++) { τότε, λογικά τώρα πρέπει να δουλέψει.

Δημοσ.
Δοκίμασε for (f = 0; f <= 50; f++) { τότε, λογικά τώρα πρέπει να δουλέψει.

 

Τώρα πράγματι λύθηκε.Απλά επειδή πρέπει να τους βάλω σαν πίνακα αντιστοιχίας,κάποιο λάθος έχω κάνει στα system.out.print και δεν μου βγάζει τον αντίστοιχο βαθμό Celcious.Κάτι έχω παραλείψει ή κάτι δεν έχω κάνει σωστά.

Δημοσ.
Τώρα πράγματι λύθηκε.Απλά επειδή πρέπει να τους βάλω σαν πίνακα αντιστοιχίας,κάποιο λάθος έχω κάνει στα system.out.print και δεν μου βγάζει τον αντίστοιχο βαθμό Celcious.Κάτι έχω παραλείψει ή κάτι δεν έχω κάνει σωστά.

 

Γι αυτό το πρόβλημα σου δεν μπορώ να απαντήσω μιας και δεν ξέρω Java. Την απορία σου την έλυσα περισσότερο λόγω τύχης & επειδή γνωρίζω ότι στην C/C++ το παραπάνω θα χτύπαγε εξαιτίας του ότι δήλωνες δύο φορές την μεταβλητή f & λόγω του ότι δεν είχες δηλώσει σωστό "starting point" για το f μέσα στο for loop. :D

Δημοσ.

μα στην for δεν έχεις λόγο να αρχίζεις με f>=0.

Η αρχική συνθήκη πρέπει να είναι = με κάτι(εδώ το 0).

 

 

και νομίζω οτι στη c πρέπει να βάλεις 9/5 και όχι 5/9

 

 

 

δες το λίγο σου κάνει?

 

 

 

import java.io.*;

 

class testa {

public static void main(String[] args) {

// double c=0;

convert();

 

}

static void convert() {

double c=0;

for (double f=0; f<=50;f++) {

System.out.println ("");

System.out.print ("Enter temperature degree in f");

System.out.println ("");

 

String line;

InputStreamReader input=new InputStreamReader(System.in);

BufferedReader in=new BufferedReader(input);

try{

line=in.readLine();

f=Double.parseDouble(line);

}catch(Exception e){}

 

c = (9/5)*(f-32);

System.out.println ("you typed "+f);

System.out.println ("The temperature degree in C is: "+c);

 

 

}

}

 

}

Δημοσ.
Απλά επειδή πρέπει να τους βάλω σαν πίνακα αντιστοιχίας,κάποιο λάθος έχω κάνει στα system.out.print και δεν μου βγάζει τον αντίστοιχο βαθμό Celcious.Κάτι έχω παραλείψει ή κάτι δεν έχω κάνει σωστά.

 

Για αρχή, έχεις δηλώσει τη μέθοδό σου σαν void, δηλαδή ότι δεν έχει κάτι προς επιστροφή, αλλά μέσα στη ρουτίνα κάνεις return. Αυτό κανονικά χτυπάει error κατά το compile.

 

Μέσα στο for-loop μην κάνεις

>return c;

αλλά

>System.out.print(c);

 

Έτσι θα σου γράψει στην κονσόλα την τιμή που θες.

 

Επίσης, όταν κάνεις πράξεις με float τα νούμερα που χρησιμοποιείς πρέπει να φροντίσεις να είναι και αυτά float. Πιο συγκεκριμένα αντικατέστησε την εντολή:

> c = (9/5)*(f-32);

με

> c = (9f/5f)*(f-32f);

Έτσι θα δηλώσεις ότι το 9,5,32 είναι float και όχι int.

Δημοσ.
Όποιος γνωρίζει Java ας με βοηθήσει.

 

Πρέπει να δημιουργήσω ένα πρόγραμμα που να μετατρέπει τους βαθμούς Fahrenheit σε Celcious.Από 0 έως 50 βαθμούς Fahrenheit να βγάζει τον αντίστοιχο βαθμό Celcious.Γράφω τον παρακάτω κώδικα:

 

public static void main(String[] args) {

float f, c;

for (float f >= 0; f <= 50; f++) {

System.out.print ("Enter temperature degree in f");

System.out.println ("");

c = 5/9*(f-32);

return c;

}

}

 

και μου βγάζει μήνυμα ότι η σειρά που ξεκινά με την εντολή for είναι "illegal start of expression".Μήπως ξέρει κανείς τι κάνω λάθος;Ευχαριστώ εκ των προτέρων.

 

 

τελικά δεν κατάλαβα... θέλεις απλά να εμφανίζει τις θερμοκρασίες από 0-50 Φαρ. σε Κελσίου?

 

ή θέλεις ο χρήστης να δίνει μία τιμή από 0-50 σε βαθμούς φάρ. και να τους κάνει το πρόγραμμα κελσίου ?

Δημοσ.

λοιπόν, επειδή ίσως μπερδεύτηκες από τις πολλές διορθώσεις :-P σου έκανα και τα δύο...

 

αν θέλεις να εμφανίζει από βαθμούς 0-50 φάρεναϊτ σε κελσίου, απλά, χωρίς να ρωτάει κάτι το χρήστη,

 

ο κώδικας είναι αυτός:

 

--------------------------------------------------------------------------

 

public class FtoC {

 

public static void main(String args[]) {

double c;

 

for (int f=0;f<=50;f++) {

c=9;

c=5/c;

c=c*(f-32);

System.out.println ("Farenait "+f+" = "+c+" Celcioum");

}//for

}//main

}//FtoC

 

--------------------------------------------------------------------------

 

 

Εάν θέλεις να ρωτάει το χρήστη και ανάλογα με το τι θερμοκρασία Φάρεναϊτ βάζει, να βγάζει την αντίστοιχη κελσίου, ο κώδικας είναι αυτός:

 

 

-------------------------------------------------------------------------

 

import java.util.Scanner;

public class FtoC_user {

 

public static void main(String args[]) {

 

boolean calcMore=true;

int f,more;

Scanner s = new Scanner(System.in);

 

while (calcMore){

System.out.println("Give degrees in Farenait");

f=s.nextInt();

System.out.println ("Farenait "+f+" = "+Calc(f)+" Celcioum");

System.out.println ("\nDo you want to calculate another? (1=yes 2=no)");

more = s.nextInt();

if (more!=1) calcMore=false;

}//while calcMore

System.out.println ("\n ---GoodBye---");

}//main

 

 

public static double Calc(int f) {

double kel;

kel=9;

kel=5/kel;

kel=kel*(f-32);

return kel;

 

}//Calc

 

}//FtoC_user

 

--------------------------------------------------------------------------

 

Εννοείτε ότι θα πρέπει να τα βάλεις σε αρχεία .java με ονομασία FtoC.java και FtoC_user.java αντίστοιχα ...

 

 

Μπορείς να δεις ότι οι τιμές που βγάζει είναι σωστές, πηγαίνοντας εδώ:

 

http://users.ioa.sch.gr/ilamprou/Unit.htm

 

στο τέλος της σελίδας.

 

Αν έχεις κάποια απορία στο κώδικα, στείλε pm ή εδώ...

 

cheers B)

Δημοσ.
λοιπόν, επειδή ίσως μπερδεύτηκες από τις πολλές διορθώσεις :-P σου έκανα και τα δύο...

 

αν θέλεις να εμφανίζει από βαθμούς 0-50 φάρεναϊτ σε κελσίου, απλά, χωρίς να ρωτάει κάτι το χρήστη,

 

ο κώδικας είναι αυτός:

 

--------------------------------------------------------------------------

 

public class FtoC {

 

public static void main(String args[]) {

double c;

 

for (int f=0;f<=50;f++) {

c=9;

c=5/c;

c=c*(f-32);

System.out.println ("Farenait "+f+" = "+c+" Celcioum");

}//for

}//main

}//FtoC

 

--------------------------------------------------------------------------

 

 

Εάν θέλεις να ρωτάει το χρήστη και ανάλογα με το τι θερμοκρασία Φάρεναϊτ βάζει, να βγάζει την αντίστοιχη κελσίου, ο κώδικας είναι αυτός:

 

 

-------------------------------------------------------------------------

 

import java.util.Scanner;

public class FtoC_user {

 

public static void main(String args[]) {

 

boolean calcMore=true;

int f,more;

Scanner s = new Scanner(System.in);

 

while (calcMore){

System.out.println("Give degrees in Farenait");

f=s.nextInt();

System.out.println ("Farenait "+f+" = "+Calc(f)+" Celcioum");

System.out.println ("\nDo you want to calculate another? (1=yes 2=no)");

more = s.nextInt();

if (more!=1) calcMore=false;

}//while calcMore

System.out.println ("\n ---GoodBye---");

}//main

 

 

public static double Calc(int f) {

double kel;

kel=9;

kel=5/kel;

kel=kel*(f-32);

return kel;

 

}//Calc

 

}//FtoC_user

 

--------------------------------------------------------------------------

 

Εννοείτε ότι θα πρέπει να τα βάλεις σε αρχεία .java με ονομασία FtoC.java και FtoC_user.java αντίστοιχα ...

 

 

Μπορείς να δεις ότι οι τιμές που βγάζει είναι σωστές, πηγαίνοντας εδώ:

 

http://users.ioa.sch.gr/ilamprou/Unit.htm

 

στο τέλος της σελίδας.

 

Αν έχεις κάποια απορία στο κώδικα, στείλε pm ή εδώ...

 

cheers B)

 

Σε ευχαριστώ φίλε mariosCS.Η λύση που ζήταγα είναι η δεύτερη.Το έβαλα στον compiler και μου δούλεψε.Να'σαι καλά

  • 1 χρόνο αργότερα...
Δημοσ.
Επίσης, όταν κάνεις πράξεις με float τα νούμερα που χρησιμοποιείς πρέπει να φροντίσεις να είναι και αυτά float. Πιο συγκεκριμένα αντικατέστησε την εντολή:

> c = (9/5)*(f-32);

με

> c = (9f/5f)*(f-32f);

Έτσι θα δηλώσεις ότι το 9,5,32 είναι float και όχι int.

 

Εψαχνα τη λυση του συγκεκριμενου προβληματος απο το google και βρηκα αυτο το θεμα.

Ευχαριστω για το παραπανω. Το προβλημα μου ηταν το οτι δεν ειχα βαλει τα f (για float, d για double) στην παρασταση.

Δημοσ.
Επίσης, όταν κάνεις πράξεις με float τα νούμερα που χρησιμοποιείς πρέπει να φροντίσεις να είναι και αυτά float. Πιο συγκεκριμένα αντικατέστησε την εντολή:

> c = (9/5)*(f-32);

με

> c = (9f/5f)*(f-32f);

Έτσι θα δηλώσεις ότι το 9,5,32 είναι float και όχι int.

 

Εψαχνα τη λυση του συγκεκριμενου προβληματος απο το google και βρηκα αυτο το θεμα.

Ευχαριστω για το παραπανω. Το προβλημα μου ηταν το οτι δεν ειχα βαλει τα f (για float, d για double) στην παρασταση.

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

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