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

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

Δημοσ.

Καλησπέρα, κάνω ένα project για την σχόλη μου αλλά δν μπορώ να καταλάβω γιατί το  δν δουλεύει. Κανονικά θα έπρεπε να εμφανίζει το εισόδημα αφού αφαιρεθούν οι φόροι αλλά για κάποιο λόγο εμφανίζει το αρχικό εισοδημα, Τι φταίει.

public class Calculator {
	public static  double roundedIncome;
	public static  int deductedTax;
	public static  int incomeLeft;
	
  
    	
    	
    
    

	public static void main(String[] args) {
		System.out.println(incomeLeft(400));

		System.out.println(taxDeductable(297));
		
	}

	public static int taxDeductable(int income) {
		int tax = 0;
		
		//round the result
		int deductedTax = (int) Math.round(tax);	
         
		//Calculates the income tax
		if (income <= 100) {
			deductedTax= (int) (income-income);
		} 
		
		else if (income >= 101 && income <= 150) {
			deductedTax = (int) ((income - 100) * 0.1);

		} 
		
		else if (income >= 151 && income <= 200) {
			deductedTax = (int) ((income - 151) * 0.2 + 50 * 0.1+1);

		} 
		else if (income >= 201 && income <= 300) {
			deductedTax = (int) ((income - 201) * 0.4 + 50 * 0.2 + 50 * 0.1+1);

		} 
		
		else if (income >= 301 && income <= 400) {
			deductedTax = (int) ((income - 301) * 0.6 + 100 * 0.4 + 50 * 0.2 + 50 * 0.1+1);

		} 
		
		else if (income >= 401) {
			deductedTax = (int) ((income - 401) * 1.2 + 100 * 0.6 + 100 * 0.4 + 50 * 0.2 + 50 * 0.1+2);

		}
		
		return (int) deductedTax;
		
		
	}
	public static int incomeLeft(int income){
		
	
		taxDeductable(income);
		//Calculates the income left after the tax has been deducted 
		incomeLeft = (int) (income - deductedTax);
		
		
		return  incomeLeft;
		
	}

	
		
	}
Δημοσ.

Μήπως το deductedTax που έχεις αναφέρεται στη local και όχι στη static;

 

Επειδη ειμαι αρκετα καινουργιος στον προγραμματισμο μπορεις να μου το εξηγήσεις λιγο παραπανω?  :P

Δημοσ.

 

Καλησπέρα, κάνω ένα project για την σχόλη μου αλλά δν μπορώ να καταλάβω γιατί το  δν δουλεύει. Κανονικά θα έπρεπε να εμφανίζει το εισόδημα αφού αφαιρεθούν οι φόροι αλλά για κάποιο λόγο εμφανίζει το αρχικό εισοδημα, Τι φταίει.

 

 

public class Calculator {
	public static  double roundedIncome;
	public static  int deductedTax;
	public static  int incomeLeft;
	
  
    	
    	
    
    

	public static void main(String[] args) {
		System.out.println(incomeLeft(400));

		System.out.println(taxDeductable(297));
		
	}

	public static int taxDeductable(int income) {
		int tax = 0;
		
		//round the result
		int deductedTax = (int) Math.round(tax);	
         
		//Calculates the income tax
		if (income <= 100) {
			deductedTax= (int) (income-income);
		} 
		
		else if (income >= 101 && income <= 150) {
			deductedTax = (int) ((income - 100) * 0.1);

		} 
		
		else if (income >= 151 && income <= 200) {
			deductedTax = (int) ((income - 151) * 0.2 + 50 * 0.1+1);

		} 
		else if (income >= 201 && income <= 300) {
			deductedTax = (int) ((income - 201) * 0.4 + 50 * 0.2 + 50 * 0.1+1);

		} 
		
		else if (income >= 301 && income <= 400) {
			deductedTax = (int) ((income - 301) * 0.6 + 100 * 0.4 + 50 * 0.2 + 50 * 0.1+1);

		} 
		
		else if (income >= 401) {
			deductedTax = (int) ((income - 401) * 1.2 + 100 * 0.6 + 100 * 0.4 + 50 * 0.2 + 50 * 0.1+2);

		}
		
		return (int) deductedTax;
		
		
	}
	public static int incomeLeft(int income){
		
	
		taxDeductable(income);
		//Calculates the income left after the tax has been deducted 
		incomeLeft = (int) (income - deductedTax);
		
		
		return  incomeLeft;
		
	}

	
		
	}

 

 

εχεις 2 ιδιες μεταβλητες deductedTax και δεν ξερει ποια απο τις 2 να επιστρεψει η συναρτηση. Προσδιορισε με το this ή αλλαξε ονοματα.

βασικα διεγραψε την 2ή δηλωση int deductedTax μεσα στην συναρτηση.

Δημοσ.

Αυτην? incomeLeft = (int) (income - deductedTax);

συγνωμη αλλα ειναι 3:30 και το παλευω αρκετη ωρα.

στην συναρτηση taxDetuctable σβησε απο την γραμμη

int deductedTax = (int) Math.round(tax);

το int, θα ειναι ετσι  μετα

deductedTax = (int) Math.round(tax);

Δημοσ.

χιλια ευχαριστω 

 

στην συναρτηση taxDetuctable σβησε απο την γραμμη

int deductedTax = (int) Math.round(tax);

το int, θα ειναι ετσι  μετα

deductedTax = (int) Math.round(tax);

  • Like 1
Δημοσ.

Πάντως εκτός απο το πρόβλημα που είχες δώσε και λίγο βάση στον κώδικα να καταλάβεις και ακριβώς τι έχεις γράψει και γιατί.

Τα μισά cast που κάνεις σε int δεν χρειάζονται γιατί και η round int γυρίζει , και όταν αφαιρείς έναν Integer απο έναν άλλο πάλι int θα είναι το αποτέλεσμα οπότε δεν χρειάζεται να το καστάρεις.

 

Επίσης αν κάνεις μαθηματικές πράξεις που πολ/ζεις έναν ακέραιο με δεκαδικό και πολ/ζεις πάλι και προσθέτεις κτλ. , μην το καστάρεις απλά σε ακέραιο αλλά προσπάθησε να παίξεις με στρογγυλοποιήσεις ανάλογα με τα δεκαδικά που σε ενδιαφέρουν.

 

Τέλος και οι 3 static μεταβλητές που δηλώνεις στην αρχή είναι ουσιαστικά άχρηστες και δεν είναι ξεκάθαρο πώς τις χρησιμοποιείς.

 

Τώρα απλά τα nice to have

1) Μάθε να γράφεις javadoc. Όσο αστείο και αν σου ακούγεται αν γράψεις javadoc στις μεθόδους που έχεις φτιάξει θα καταλάβεις ότι δεν έχουν νόημα με τον τρόπο που τις έχεις φτιάξει, άσχετα με το αν σου φένεται λογικό να τις καλείς απο την main και ότι τυπώνουν αποτέλεσμα.

 

2) Γύρισε μετά απο λίγο καιρό στην λύση που έχεις και προσπάθησε να το γράψεις χωρίς τις if . Διάβασε περι complexity και γενικά metrics, θα σε κάνουν να γράφεις καλύτερα , ποιο απλά , μικτότερα blocks κώδικα τα οποία θα είναι εύκολα στην συντήρηση και δεν θα ανατινάζεται το σύμπαν όταν πειράζεις κάτι.

 

Αυτά απο εμένα , μπράβο για την προσπάθεια :)

  • Like 1

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...