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, который будет вести себя правильно. Я не знаю, почему это происходит и тратилось на это. Может ли кто-нибудь сказать мне, как заставить это правильно себя вести? Если вам нужно, чтобы я опубликовал остальную часть программы, я это сделаю.Проблема с программой преобразования веса
Слишком много состояния. Это убивает меня. (И сделать тривиальную программу в беспорядок: - /) – 2010-10-24 22:29:31
К большому штату? Что вы имеете в виду? – user465001
Разве вы не тот парень, который просто задал тот же вопрос и привязал весь код как .zip? По крайней мере, подумайте о том, чтобы изменить название на нечто большее, связанное с реальной проблемой, с которой вы столкнулись. – Claudiu