Текст записи Xamarin Forms не возвращает число

Я новичок в программировании. Я пытаюсь сохранить текст ввода в переменных с плавающей запятой, затем вычислить базовый процент и показать его ниже внутри метки. Вместо переменной внутри метки печатается NaN. Если я использую целые числа, это говорит о том, что я пытаюсь разделить на ноль, что говорит мне, что текст, прочитанный из записи, ничего не возвращает.

Что могло быть причиной этого?

public partial class GoalTrackerPage : ContentPage
{
    float goal = 0.0000f;
    float done = 0.0000f;
    float progress = 0.0000f;


    public GoalTrackerPage ()
    {
        InitializeComponent ();

        g1EntryGoal = new Entry();
        g1EntryDone = new Entry();
        g1PrBar = new ProgressBar();          
    }

    private void add1_Clicked(object sender, EventArgs e)
    {
        GoalStatusLabelView();
    }

    private void GoalStatusLabelView ()
    {          
        progress = done / goal * 100.0000f;
        g1StatusLabel.Text = "The Goal is at " + progress;
    }

    private void g1EntryGoal_Completed(object sender, EventArgs e)
    {
        goal = float.Parse(g1EntryGoal.Text ?? "0");
    }

    private void g1EntryDone_Completed(object sender, EventArgs e)
    {
        done = float.Parse(g1EntryDone.Text ?? "0");
    }
progress = done / goal * 100.0000f; думаю будет progress = done / goal * 100.0000;
Sivabalan 30.07.2018 07:28

вы нигде не назначаете свойство Text записей g1EntryGoal или g1EntryDone

Alex 30.07.2018 07:28

Можете ли вы отладить и распечатать значение g1EntryGoal.Text в консоли?

Fahadsk 30.07.2018 07:49

Алекс, а как насчет: goal = float.Parse (g1EntryGoal.Text ?? "0");

Whhytecrowe 30.07.2018 09:05

Fahadsk, отладка выводит 0 для обеих строк, назначенных для записи. Текст после того, как я ввожу число и нажимаю Enter.

Whhytecrowe 30.07.2018 09:37
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
5
211
2

Ответы 2

{          
    progress = done / goal * 100.0000f;
    g1StatusLabel.Text = "The Goal is at " + progress;
}

Результат в основном просто ноль, и, поскольку он содержит двойное значение, он вернет NaN в g1StatusLabel.Text.

Возможно, это могло бы пролить немного больше информации о работе с результатом NaN.

Поле Double.NaN

Джасвиндер Сингх, почему он равен нулю, если я ввожу число в запись?

Whhytecrowe 30.07.2018 09:02

Хм, что происходит, когда вы отлаживаете g1EntryGoal.Text и цель? Какие данные вы в нем видите?

Jas 30.07.2018 09:33

печатает [0:] для обеих записей.

Whhytecrowe 30.07.2018 09:38

Это означает, что с вашим захватом данных что-то не так, поскольку он печатает 0 вместо добавленного вами значения.

Jas 30.07.2018 09:44

Я дважды проверил и трижды назначил свойство text. Даже используя больше варов, мне нужно просто убедиться. EntryGoal.Text по-прежнему равен 0 независимо от того, что я ввожу. Кстати, я назначил только цифровую клавиатуру для обеих записей.

Whhytecrowe 30.07.2018 09:44

Как мне правильно собирать данные из записи?

Whhytecrowe 30.07.2018 09:47

Я обычно использую класс объекта и / или уровень данных, но здесь перебор, у меня сейчас нет среды, чтобы отладить это, если я получу обновление, я опубликую его здесь.

Jas 30.07.2018 09:54

Я понял! Поскольку я назначал свойство text внутри события «Text Completed», мне следовало использовать другой синтаксис. Правильный синтаксис для этого случая:

var g1DoneText = ((Entry) sender) .Text;

вместо стандартных: var g1DoneText = G1EntryDone.Text;

Другие вопросы по теме