2016-04-12 23 views
0

merhaba ben bir sorun ne bir id kilolu bir turuncu ya da limon ve u koymak 1 kg koymak (1 tanıtmak) sonra u fiyat u koymak idk 5 usd bir hesap yapıyor im (tanıtın 5) sonra ben 1x5 = 5 ile çarpanı sonra ne kadar ben ödeyecek kadar 10 usd dedi ben 10 müşteriye ödediğimi söyleyeyim ve hesap makinesi 5-10 = 5 orada sorun var nerede var benim kod değiştiren müşteri (10bucks 5) 2 kez tekrarlar 2 kez (bana 2 kez sormak için müşteri ammount için sor) ben satırda 0 (sıfır) koymak çalıştı: vuelto = yeni float [1]; koymak bana bir hata verir nasıl onu tamir edebilirim? Bu hatayı nasıl giderebilirim? java.lang.arrayIndexOutOfBoundsException: 0

o döngünün önceki gövdesinin bir bölümü ("Toplam A Pagar" kısmı) olduğu için

import java.util.Scanner; 

public class arreglo1 { 
    public static void main(String[] args) { 

     Scanner ingreso = new Scanner(System.in); 
     Scanner peso = new Scanner(System.in); 
     Scanner precios = new Scanner(System.in); 
     Scanner vuelto1 = new Scanner(System.in); 

     float[] kilo; //definir un arreglo 
     float[] precio; 
     float[] vuelto; 
     kilo = new float[2]; //iniciar un arreglo 
     precio = new float[2]; 
     vuelto = new float[1]; 
     float Total; 
     float Vuelto1; 

     System.out.println("Ingrese el peso del Producto:"); 

     for (int i = 0; i < 2; i = i + 1) { 

      kilo[i] = peso.nextFloat(); 

     } 
     System.out.println("\nIngrese precio del Producto:"); 

     for (int j = 0; j < 2; j = j + 1) { 
      precio[j] = precios.nextFloat(); 
     } 

     //////Total A Pagar 
     for (int i = 0; i < 2; i = i + 1) { 
      Total = ((kilo[0] * precio[0]) + (kilo[1] * precio[1])); 
      System.out.print("\nTotal a pagar: " + Total); 

      //////Vuelto para el cliente 

      System.out.println("\nIngrese monto con el que se va a pagar:"); 

      for (int b = 0; b == 0; b = b + 1) { 
       vuelto[b] = vuelto1.nextFloat(); 
       Vuelto1 = (float)(Total - vuelto[b])/-1; 
       System.out.print("\nVuelto: " + Vuelto1); 

      } 
     } 
    } 
} 
+1

hepsi aynı şeyi yapıyorlar. Neden sahip olduğunuzu merak ediyorum ... (int b = 0; b == 0; b = b + 1) –

+0

için sadece bir kez mi çalıştırıyorsunuz? – Pooya

+0

evet sadece bir kez çalıştırmak için satın aldım 2 ürün – Alexander

cevap

0

döngü ("veulto" bölümü) için son kez aday olacak kodu gidecekseniz . For döngüsünün tüm gövdesi i<2 iken yürütülür. İlk döngü için gövdeyi ayırmak için bir kapanma ayracı eklenmeli ve ikincisi sadece "veulto" nun bir kez gerçekleştirilmesini istiyorsanız.

for (int i = 0; i < 2; i = i + 1) { 
      Total = ((kilo[0] * precio[0]) + (kilo[1] * precio[1])); 
      System.out.print("\nTotal a pagar: " + Total);} 

Açıkçası son kapanış ayracı da başlatılmak olmayabilir yerel değişken Total gibi olsa da, sorun aslında bir tane daha ortaya koymaktadır Çözme

:-) onları dengelemek için silinmesi gereken, Javac onu yürütmelidir . Çözelti, sadece var bildirildiği andan itibaren muhtemelen 0'a

float Total = 0.0f; 

bunu yaparken, "veulto" kısmı döngü için olması gerekmez, bazı değere başlatılması olduğunu bir kez idam edildi.

0

Neden bu kod bölümüne ihtiyacınız var? Sanırım

for (int b = 0; b == 0; b = b + 1) { 
    vuelto[b] = vuelto1.nextFloat(); 
    Vuelto1 = (float)(Total - vuelto[b])/-1; 
    System.out.print("\nVuelto: " + Vuelto1); 
} 

, sadece bir kez müşteriden bir fiyat okumak istiyorum, bu yüzden yazmak için yeter

Vuelto1 = Math.abs((float)(Total - vuelto1.nextFloat())) 
System.out.print("\nVuelto: " + Vuelto1); 

Not: Math.abs() size böylece sayının mutlak değerini verir Her zaman pozitif bir sayı olsun. Kodunuzda 4 tarayıcınız var.

İlgili konular