2016-04-05 36 views
0

Yöntemleri ana yöntemde çağırmakta sorun yaşıyorum. Bu ana yönteminde olması gerekenler: kullanıcıdan ürün siparişi alın ürün ArrayListAna yöntemdeki diğer yöntemleri düzgün şekilde nasıl düzgün arayabilirim

alın ve üründe mevcut kontrol

Baskı afiş mesajı

ürün

ürün fiyatı alın varsa

ArrayList

ürün vergisi

hesaplayın toplam satış

Çıktı toplam satış

Çıktı Else

hesaplayın "Ürün bulunamadı."

import java.util.ArrayList; 
import java.util.Scanner; 

public class Unit6ProblemSet { 


public static void main(String[] args) { 

    bannerPrinter(); 
    ArrayList<String> products = productBuilder(); 
    Boolean productExists = getOrder(products); 
    if(productExists) { 
     double price = getPrice(); 
     getTax(tax); 
     getTotal(saleTotal); 
     printTotal(saleTotal); 
    } 
    else { 
     System.out.println("Product not found."); 
    }  
} 

public static void bannerPrinter() { 

    System.out.println("******************************************"); 
    System.out.println("****** Welcome to my eCommerce app! ******"); 
    System.out.println("******************************************"); 
    System.out.println(); 
} 

public static ArrayList<String> productBuilder() { 

    ArrayList<String> products = new ArrayList<String>(); 

    products.add("Headphones"); 
    products.add("Pencils"); 
    products.add("Pens"); 
    products.add("Computers"); 
    products.add("Videogames"); 

    return products; 
} 

public static boolean getOrder(ArrayList<String> products) { 

    Scanner scnr = new Scanner(System.in); 

    String userStr = ""; 

    System.out.println("Enter a product: "); 
    userStr = scnr.nextLine(); 

    boolean productName = products.contains(userStr); 

    if (productName) { 
     System.out.println("True"); 
    } 
    else { 
     System.out.println("False"); 
    } 

    return productName; 
} 

public static double getPrice() { 

    double price = 0.0; 
    price = (Math.random() + 1) * 100; 

    return price; 
} 

public static double getTax(double price) { 

    double tax = 0.0; 
    tax = price * 0.10; 

    return tax; 
} 

public static double getTotal(double price, double tax) { 

    double saleTotal = 0.0; 
    saleTotal = price + tax; 

    return saleTotal; 
} 

public static void printTotal(double saleTotal) { 

    System.out.println("Your sale total is: " + saleTotal); 
} 

} 

Sadece ana farklı yöntemleri aramakta sorun yaşıyorum.

+0

Ne tür bir sorun? Lütfen gözlemlediğiniz hatayı gönderin. – Harald

+0

Mutlaka bir hata yapmıyorum, sadece ana yöntemdeki farklı yöntemleri nasıl arayacağımı karıştırıyorum. Yani daha fazla boyunca, bu noktadan nasıl yapılacağından pek emin değilim. – cazyaboutjava2020

cevap

0

Doğru yoldasın.

bannerPrinter(); 
ArrayList<String> products = productBuilder(); 

ana yönteminde ilk satırı, bannerPrinter() sizin bannerPrinter yöntemini çağırır.

Şimdi ikinci çağrı için productBuilder() temelde bir sonuç alıyorsunuz. Şimdi bu sonucu kullanarak, bu ürünün var olup olmadığını görebilirsiniz, ürün fiyatları vb. Olsun.

Yani, bir yöntemden ana aramak istediğinizde, yapmanız gereken şey bu ismi vermek için yöntem adını kullanmaktır.

getOrder(ArrayList<String> products) gibi argümanlara sahip yöntemler için, yönteme bir argüman iletmeniz gerekir.

Örneğinizde getOrder(products) olur. Bu yöntem, doğru argümanla yöntemi çağırır ve boolean sonucunu alır.

Ayrıca, bir dönüş türü olan bir yöntemi çağırdığınızda, son düzenlemenize dayanarak, örneğin, getOrder() sonucunu almak için bir değişkenin olması gerekir.

, bir List<String> böylece temelde diyor bu

ArrayList<String> products = productBuilder(); yaptılar dönmek ürünlerimi almak ve bu yüzden bunu kullanabilirsiniz products benim dizi listesinde saklayabilirsiniz productBuilder().

Diğer alıcılarınız da benzer bir şey yapıyor. Sonucu saklamanız ve ardından diğer yöntemlerinizi çağırmak için bunu kullanmanız gerekir.

Genel olarak Java ile ilgili bir şeyler okumanızı öneririm, çünkü bu temel bir sorudur.Bu bir Java 101 sınıfı sınıf öyküsü ise, yöntem ve sınıfların birbirlerini nasıl adlandırdıklarını daha iyi anlamak için ilk kod bölümlerini yeniden okuyun.

+0

Tamam, 'getOrder()' ve 'getPrice()' yöntemini yazabildim. Ancak, şimdi son üç yöntem çağrısında kafam karıştı. 'GetTax (tax)', 'getTotal (saleTotal)' ve 'printTotal (saleTotal)' yazdım. Ancak bu çağrıların her birinde, sembolü bulamadığını söylüyor? – cazyaboutjava2020

+0

Orijinal yayınınızı değişikliklerinizle güncelleyebilir misiniz? – wiredniko

+0

Yaptığım değişiklikleri güncelledim – cazyaboutjava2020

0

Eğer ihtiyaç duydukları argümanları geçirerek ihtiyacınız yöntemleri aramaya devam ve değişken

onların dönüş sonucu kaydetmek, ana yöntemde sizin getOrder yöntemle

public static boolean getOrder(ArrayList<String> products) { 

     Scanner scnr = new Scanner(System.in); 

     String userStr = ""; 


     System.out.println("Enter a product: "); 
     userStr = scnr.nextLine(); 

     //Move this after scanning user input 
     boolean productName = products.contains(userStr); 

     if (productName) { 
      System.out.println("True"); 
     } 
     else { 
      System.out.println("False"); 
     } 

     return productName; 
    } 

olası bir sorun olabilir

public static void main(String[] args) { 

     bannerPrinter(); 
     ArrayList<String> products = productBuilder(); 
     Boolean productExists= getOrder(products); //getOrder needs arraylist and return boolean 

     //then check if the returned result is true i.e if product exists 
     if(productExists){ 
     double price = getPrice(); 

     //do other stuff, calcualte tax on price and then get total and etx 
     } 
     else{ 
     //Print "product not found" 
     } 


    } 
+0

Hatalı bir şekilde hataya yakalanın! Şimdi diğer metodları nasıl arayacağım konusunda kafam karıştı – cazyaboutjava2020

+0

Cevabın da yardımı oldu; ancak iki cevabı kabul edemem. Ama bana sorun için yardım ettiğin için çok teşekkür etmek istedim! – cazyaboutjava2020

+0

Sorun değil, rica ederim – TheUknown

İlgili konular