2013-10-15 8 views
0

내가 묻는 문제는 아마도 매우 간단합니다. 그러나 나는 자바 프로그래밍의 완전한 초보자이며이 질문에 갇혀 있습니다. 문제는 변수를 추가 할뿐만 아니라 여러 메소드와 인자를 사용해야한다는 것입니다.인수가있는 여러 메서드 java

예를 들어 사용자 입력을 입력하고 다른 정수 변수를 함께 추가해야합니다. 프로그램을 컴파일 할 수는 있지만 어떻게 든 변수를 추가하는 것은 잘못되었습니다.

이 예제에서는 스포츠 모델로 car2를 입력 할 때 변수의 더하기와 빼기가 잘못되었습니다. 대단히 감사합니다. 어떤 도움도 대단히 감사하겠습니다.

// Methods.java 
import javax.swing.*; // import swing lib 
public class MethodsTest 
{ 
// global int access for all methods 
static int basicPrice = 0; 
static int carPaints = 0; 
static int sportsModel = 0; 
static int discount = 0; 
static int priceTotal = 0; 

public static void main(String[] args) 
{ 
    carModel(); 
    System.exit(0); 
} 

public static void carModel() 
{ 
    String askCarTypes = ""; 
    String carTypes = ""; 

    askCarTypes = JOptionPane.showInputDialog 
    ("Car1 or Car2?"); 

    carTypes = typesOfCar(askCarTypes); 

    String askSportsModel = ""; 
    String carSportsModel = ""; 

    askSportsModel = JOptionPane.showInputDialog 
    ("Sports Model? (y/n)"); 

    carSportsModel = sportsModelCar(askSportsModel); 

    JOptionPane.showMessageDialog 
    (null, "Basic Price: " + basicPrice + "\n" + 
     "Car Paints: " + carPaints + "\n" + 
     "Car Model: " + sportsModel + "\n" + 
     "Discount: " + discount + "\n" + 
     "Total: " + priceTotal); 

    return; 

} 

/* Calculating basic price w/o solar panel 
String args = types */ 
public static String typesOfCar(String types) 
{ 
    String a = ""; 

    if (firstCar(types)) 
    { 
     basicPrice = basicPrice + 20000; 
     priceTotal = basicPrice; 
    } 
    else if (secondCar(types)) 
    { 
     basicPrice = basicPrice + 20000; 
     carPaints = carPaints + 2000; 
     priceTotal = basicPrice + carPaints; 
    } 
    else 
    { 
     JOptionPane.showMessageDialog 
     (null, "Sorry we have no price available for that model."); 
     return a; 
    } 

    return a; 
} 

/* Calculating price w/ sports 
String args = acc */ 
public static String sportsModelCar(String acc) 
{ 
    String b = ""; 

    if (car1SportsModel(acc)) 
    { 
     sportsModel = sportsModel + 5000; 
     priceTotal = basicPrice + sportsModel; 
    } 
    else if (car2SportsModel(acc)) 
    { 
     sportsModel = sportsModel + 5000; 
     discount = discount - 500; 
     priceTotal = basicPrice + carPaints + sportsModel + discount; 
    } 

    return b; 
} 

public static boolean firstCar (String types) 
{ 
    if (types.equals("car1")) 
    { 
     return true; 
    } 
    else 
    { 
     return false; 
    } 
} 

public static boolean secondCar (String types) 
{ 
    if (types.equals("car2")) 
    { 
     return true; 
    } 
    else 
    { 
     return false; 
    } 
} 

public static boolean car1SportsModel (String acc) 
{ 
    if (acc.equals("y")) 
    { 
     return true; 
    } 
    else 
    { 
     return false; 
    } 
} 

public static boolean car2SportsModel (String acc) 
{ 
    if (acc.equals("y")) 
    { 
     return true; 
    } 
    else 
    { 
     return false; 
    } 
} 
} 
/* Output with car2 and sportsModel 
Basic Price: 20000 
Car Paints: 2000 
Car Model: 5000 
Discount: 0 
Total: 25000 */ 

할인은 -500을 표시해야합니다 그리고 당신은 값이 "할인"을 설정하지 않는 26500.

+5

전체 소스 파일을 업로드 한 다음 문제를 해결해달라고 요청하는 것은 대개 의아해합니다. 문제가 뭐라고 생각하니? – Michael

+0

@Michael 나는 public static string sportsModelCar – user2875021

답변

1

총이 있어야한다.

if (car1SportsModel(acc)) 
{ 
    sportsModel = sportsModel + 5000; 
    priceTotal = basicPrice + sportsModel; 
} 
else if (car2SportsModel(acc)) 
{ 
    sportsModel = sportsModel + 5000; 
    discount = discount - 500; 
    priceTotal = basicPrice + carPaints + sportsModel + discount; 
} 

car1SportsModelcar2SportsModel 방법은 기능적으로 동일하고, 그래서 위의 코드에서 다른 문을 공격하는 것은 불가능합니다. discount이 설정되지 않으므로 원래 0 값으로 유지됩니다.

실제로 이러한 기능이 없어야합니다. 대신, 왜 이렇게하면 안되니?

if (acc.equals("y")) 

는 사실, 당신은 아마 어떤 종류의 Car 클래스를 생성하고 일을 비교하는 것을 사용해야합니다.

+0

의 메소드에서 다른 것보다 더 복잡하게 만들 수 있다고 생각합니다. 그러나 귀하의 조언을 따른 후에도 나의 할인 가치는 0입니다. 나는 아직도 확실하지 않다. 그런 멍청 아. – user2875021

+0

나는 당신이 이클립스에서 이것을 실행하고 있다고 가정한다. Eclipse 디버거를 사용하는 방법을 알고 있습니까? 이 문제를 쉽게 해결하고 향후 모든 문제를 해결할 수있는 도구를 제공합니다. https://www.ibm.com/developerworks/library/os-ecbug/ – Michael

+0

아니오 실제로 텍스트 편집기를 사용하여 터미널로 컴파일하고 있습니다. 나는 아마 지금 일식을 사용하여 시작해야합니다. 당신의 도움을 주셔서 대단히 감사합니다. – user2875021

관련 문제