2010-10-24 3 views
0
import java.util.Scanner; 
import java.text.DecimalFormat; 


public class WeightConverter 
{ 
    private double numOfLbs2Conv, numOfKilos2Conv, converted2Pounds, converted2Kilograms; 
    private final double WEIGHT_CONVERSION_FACTOR = 2.20462262; 
    private int desiredDecimalPlaces; 
    private boolean toKilos, toPounds; 

    public void readPoundsAndConvert() 
    { 
     toKilos = true; 
     System.out.print("Enter the number of pounds to convert to " 
      + "kilograms: "); 
     Scanner keyboard = new Scanner(System.in); 
     numOfLbs2Conv = keyboard.nextDouble(); 
     converted2Pounds = numOfLbs2Conv/WEIGHT_CONVERSION_FACTOR; 
    } 


    public void readKilogramsAndConvert() 
    { 
     toPounds = true; 
     System.out.print("Enter the number of kilograms to convert to " 
      + "pounds: "); 
     Scanner keyboard = new Scanner(System.in); 
     numOfKilos2Conv = keyboard.nextDouble(); 
     converted2Kilograms = numOfKilos2Conv * WEIGHT_CONVERSION_FACTOR; 
    } 


    public void displayBothValues() 
    { 
     System.out.print("How many places after the decimal would you like? "); 
     Scanner keyboard = new Scanner(System.in); 
     desiredDecimalPlaces = keyboard.nextInt(); 

     String decimalCounter = "0."; 
     for (int i = 0; i < desiredDecimalPlaces; i++) 
     { 
      decimalCounter = decimalCounter + "0"; 
     } 

     DecimalFormat decimalsConverted = new DecimalFormat(decimalCounter);    


     if (toKilos) 
     { 

      System.out.println("The number of kilograms in " 
      + decimalsConverted.format(numOfLbs2Conv) + " pounds is " 
      + decimalsConverted.format(converted2Kilograms) + "."); 
     System.out.print("Press Enter to continue ... "); 
     System.out.println(""); 
     keyboard.nextLine(); 
     } 


     if (toPounds) 
     { 

     System.out.println("The number of pounds in " 
      + decimalsConverted.format(numOfKilos2Conv) + " kilograms is " 
      + decimalsConverted.format(converted2Pounds) + "."); 
     System.out.print("Press Enter to continue ... "); 
     System.out.println(""); 
     keyboard.nextLine(); 
     } 
    } 
}  

Привет всем. У меня возникли проблемы с этим. Выход завинчен. Если пользователь обращается в фунты (readPoundsAndConvert()), на выходе будет указано, что преобразованный ответ равен 0. Если пользователь сначала преобразует килограммы, килограммы будут правильно преобразовываться, а затем для somereason метод readPoundsAndConvert() будет называться d, который будет вести себя правильно. Я не знаю, почему это происходит и тратилось на это. Может ли кто-нибудь сказать мне, как заставить это правильно себя вести? Если вам нужно, чтобы я опубликовал остальную часть программы, я это сделаю.Проблема с программой преобразования веса

+3

Слишком много состояния. Это убивает меня. (И сделать тривиальную программу в беспорядок: - /) – 2010-10-24 22:29:31

+0

К большому штату? Что вы имеете в виду? – user465001

+1

Разве вы не тот парень, который просто задал тот же вопрос и привязал весь код как .zip? По крайней мере, подумайте о том, чтобы изменить название на нечто большее, связанное с реальной проблемой, с которой вы столкнулись. – Claudiu

ответ

1

Вы используете переменные в обратном направлении ... В readPoundsAndConvert() вы сохраняете преобразованное значение в convert2Pounds, но когда вы пытаетесь его отобразить, вы читаете с convert2Kilograms.

+1

И вы действительно должны научиться использовать отладчик. Go download eclipse научиться отлаживать с ним. –

0

Похоже, вы настраиваете toKilos и toPounds к true в ваших двух «Convert» методы, но не одновременно установив другой в false. Таким образом, если вы вызвали один из методов конвертации раньше, когда вы вызываете displayBothValues(), оба toKilos и toPounds будут true и оба будут напечатаны.

Смежные вопросы