Преобразовать дробь в десятичное число - PullRequest
5 голосов
/ 27 декабря 2010

Я делаю некоторые упражнения в своей книге по Java. Я очень новичок в программировании. Поэтому обратите внимание (в коде), что я все еще в первой главе. Теперь я уже сделал все, я просто хочу подтверждение, если это законно, поэтому я могу смело двигаться дальше.

Если нет, я был бы искренне признателен, если бы не сделал мой код для меня; Я хочу совет.

Вот вопрос, записанный в книге , «Напишите приложение, которое запрашивает / считывает числитель и знаменатель дроби как целые числа, а затем печатает десятичный эквивалент дроби.»

Я проиллюстрирую это предложение своим кодом:

Я сделал ревизию здесь. Это нормально? ..

import java.util.*;
public class ExerciseEleven {
public static void main (String[] args) {
Scanner sc = new Scanner (System.in);

    double fraction;
    int fractionValue;
    int decimal;
    double value;

    System.out.println("Enter Numerator: ");
    int numerator = sc.nextInt();
    System.out.println("Enter Denominator: ");
    int denominator = sc.nextInt();

    fraction = (double) numerator / denominator;
    fractionValue = (int) (fraction * 10);
    decimal = fractionValue % 10;
    value = decimal * 0.1;


    System.out.println(value);
}
}

Он компилируется и работает нормально. Спасибо.

Ответы [ 3 ]

10 голосов
/ 27 декабря 2010

Он не выполняет то, что говорит задача. Вы читаете двойные числа вместо целых, и десятичный эквивалент - это не то, что вы распечатываете. Десятичный эквивалент для 1/2 равен 0,5. И вы печатаете 5.

Кроме того, вы можете обратить внимание на свой стиль кода: имена переменных обычно пишутся в lowerCamelCase, например: simpleVariable.

Обновление

Теперь он печатает то, что вам нужно. Однако вы делаете это не совсем правильно, и ваши отступы могут быть улучшены.

3 голосов
/ 27 декабря 2010

Все в порядке (я не очень хорошо прочитал задание, не так ли? Благодарю Владимир .) ... но некоторые комментарии:

  • Обычно вы хотите сделать отступ в методах класса.
  • Стандартная практика - использовать начальные заглавные буквы (Numerator) только для типов (например, классов, интерфейсов, перечислений).Имена переменных, полей и методов должны начинаться со строчной буквы.Теперь вы можете игнорировать стандартную практику, но если вы это сделаете, у людей будет много проблем с чтением вашего кода.: -)
  • Для округления вы, вероятно, захотите взглянуть на Math.round, а не на усечение с приведением.Но в задании ничего не сказано о округлении.
  • Возможно, вы захотите разобраться со случаем, когда denominator равен нулю.

Так что помните:

import java.util.*;

public class ExcerciseEleven  {

    public static void main (String[] args) {
        Scanner sc = new Scanner (System.in);

        System.out.println("Enter Numerator: ");
        int numerator = sc.nextInt();
        System.out.println("Enter Denominator: ");
        int denominator = sc.nextInt();
        if (denominator == 0) {
            System.out.println("Can't divide by zero");
        }
        else {
            double fraction = (double)numerator / denominator;
            System.out.println(fraction);
        }
    }
}
0 голосов
/ 19 августа 2017

Эй, я размышляю над этим, и после просмотра этого источника я заметил кое-что интересное, и вот алгоритм, который я планирую реализовать

  1. Сначала я преобразую число из метрики, используя Javax.Measure семейство функций, и я получу число, как 0,3750
  2. Тогда я разделю число на ONE_SIXTEENTH, что = 0,0625
    ONE_SIXTEENTH = 0.0625
    Ответ 0.3750 / ONE_SIXTEENTH = 6;
  3. Так что теперь я знаю, что есть 6 шестнадцатых дюйма
  4. Далее я проверяю, делится ли 6 на 4, 6/4 = 1,5, т. Е. Не на целое число, поэтому на данный момент доля по-прежнему считается 6/16-й дюйма
  5. Далее я проверяю, делится ли 6 на 2, 6/2 = 3 Это целое число, поэтому мы будем использовать его для восстановления дроби
  6. Итак, теперь, когда мы разделили 6 на 2 и получили 3, 16 нужно поделить на 2, и в итоге мы получим 8, так что 6/16 дюйма становится 3/8-й дюйма.

PS Кто-нибудь заметил, что это похоже на программу fizz bang?

____________________________________________

Вот таблица, которая помогла мне разобраться с этим

This is how I worked out how I was going to do this
Моя работа

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...