2016-06-10 1 views
-3

Dies ist ein einfaches Programm, von einem Lebensmittelgeschäft, wo ich gehe, um zwei Artikel zu kaufen, jeder hat einen Preis und eine Menge.Dieses Programm zeigt nicht den Rabatt, den ich darin gemacht habe

Dieses Programm multipliziert den ersten Artikelpreis mit seiner Menge und den zweiten auch, fügt sie dann zusammen, aber es gibt eine Bedingung, wo, wenn die Summe dieser beiden Artikel gleich oder mehr als 100 ist, ein Rabatt auf die insgesamt, was 5% ist.

Ich schrieb das Programm, aber wenn ich es laufen, und das Ergebnis der beiden Elemente 100, kann das Programm nicht den Rabatt gelten, es gibt mir folgendes: -

Bitte geben Sie die ersten Preis

Bitte geben Sie die erste Menge

Bitte geben Sie den zweiten Preis

Bitte geben Sie die zweite Menge

Das Ergebnis ist = 100

Der Rabatt wird = 0,0

Das Endergebnis Is = 100.0


import java.util.Scanner; 

public class Main { 

    public static void main(String[] args) { 
     // TODO Auto-generated method stub 

     byte p1,q1,p2,q2; 
     short t1,t2,result = 0; 
     float resu,disc,finaal; 
     disc=5/100; 
     resu=result*disc; 

     Scanner s = new Scanner(System.in); 
     System.out.println("Please Enter The First Price"); 
     p1=s.nextByte(); 
     System.out.println("Please enter The First Quantity"); 
     q1=s.nextByte(); 
     System.out.println("Please Enter The Second Price"); 
     p2=s.nextByte(); 
     System.out.println("Please enter The Second Quantity"); 
     q2=s.nextByte(); 
     t1=(short) (p1*q1); 
     t2=(short) (p2*q2); 
     result=(short) (t1+t2); 
     System.out.println("The Result Is ="+result); 
     if(result>=100) 
     { 
      finaal=result-resu; 
      System.out.println("The Discount Is = "+resu); 
      System.out.println("The Final Result Is = " + finaal); 
     } 
    } 
} 
+1

'resu = ergebnis * disc;' wird ausgewertet, wenn 'result' 0 ist. Also ergibt 'resu' auch 0. – Berger

+3

'5/100' wird immer 0 sein, du hast im wesentlichen' resu = 0 * 0' –

+0

Sobald du Zeit hast [wie kleine Programme zu debuggen sind] (https://ericlippert.com/ 2014/03/05/how-to-debug-small-programme /) ist eine großartige Ressource –

Antwort

0

Sie resu berechnet, bevor Sie result berechnet.

+0

Ich berechnete danach, nichts änderte ... –

0

Sie berechnen resu vor result:

int t1,t2,result = 0; 
float resu,disc,finaal; 
disc=5/100; 
resu=result*disc; 

So ist resu immer 0, und kein Rabatt angewendet wird.

Sie sollten nach dem Ergebnis resu berechnen.

Auch disc sollte 0.05f initialisiert werden, anstatt 5/100

import java.util.Scanner; 

public class Main { 

    public static void main(String[] args) { 
     // TODO Auto-generated method stub 

     int p1,q1,p2,q2; 
     int t1,t2,result = 0; 
     float resu,disc = 0.05f,finaal; 

     Scanner s = new Scanner(System.in); 
     System.out.println("Please Enter The First Price"); 
     p1=s.nextInt(); 
     System.out.println("Please enter The First Quantity"); 
     q1=s.nextInt(); 
     System.out.println("Please Enter The Second Price"); 
     p2=s.nextInt(); 
     System.out.println("Please enter The Second Quantity"); 
     q2=s.nextInt(); 
     t1 = (p1*q1); 
     t2= (p2*q2); 
     result= (t1+t2); 
     resu=result*disc; 

     System.out.println("The Result Is ="+result); 
     if(result>=100) 
     { 
      finaal=result-resu; 
      System.out.println("The Discount Is = "+resu); 
      System.out.println("The Final Result Is = " + finaal); 
     } 
    } 
} 

Test:

Please Enter The First Price 
25 
Please enter The First Quantity 
2 
Please Enter The Second Price 
2 
Please enter The Second Quantity 
25 
The Result Is =100 
The Discount Is = 5.0 
The Final Result Is = 95.0 
+0

Vielen Dank .. –

+0

Sorry, kann ich Ihnen eine Frage stellen? , Was ist "f", die Sie in die Deklaration von Disc = 0.05f setzen? ... was ist das? @arizzle –

+0

@MazenYosry standardmäßig 0.05 wird als ein Doppel behandelt, 'f' sagt dem Compiler, es ist ein float. – explv

0

sicher, dass es gibt 0 als Ergebnis, Blick auf die Linie 8 und 9

short t1,t2,result = 0; 
disc=5/100; 
resu=result*disc; 

so resu = (5/100 * 0) was 0 ist die Korrektur wird diese (resu = Ergebnis * Scheibe;) sollte nach (Ergebnis = (kurz) (t1 + t2);) excuted werden nicht, bevor es

richtigen Code:

result=(short) (t1+t2); 
resu=result*disc; 

Ergebnis jetzt 100

hoffe es hilft

+0

Ich habe gemacht, aber es hat nicht .. –

Verwandte Themen