2013-09-05 4 views
2

Я работаю над приложением, которое позволяет пользователю отслеживать цель сбережения денег.Как правильно вернуть значение?

public static int CalcProg(int userGoal, int userBalance, int userProg) 
{ 
    userProg = userBalance/userGoal; 
    userProg = userProg * 100 
    return userProg; 
} 

private void Form1_Load(object sender, EventArgs e) 
{ 
    //Calls the FileVerification Method 
    FileVerification(); 

    //Sets the label1 transparency to true 
    label1.Parent = pictureBox1; 
    label1.BackColor = Color.Transparent; 

    LoadData(); 
    CalcProg(userGoal, userBalance, userProg); 

    progressBar1.Value = userProg; 
    progLabel = Convert.ToString(userProg); 
    label3.Text = progLabel; 
} 

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

Я использую методы для чтения и записи файла для данных, используемых в переменных userBalance и userGoal. Это все работает нормально, потому что, когда я использую одну из этих переменных вместо «userProg» в функции преобразования ниже, она отображается так же, как и в текстовом файле.

Проблема возникает, когда я пытаюсь выполнить преобразование. Моя формула находится в CalcProg. Когда я когда-либо запускаю программу, два элемента (индикатор выполнения и метка), которые устанавливают их значение в переменной userProg, просто отображают нуль независимо от того, какое значение вводится в текстовый файл.

Я попытался использовать double для метода CalcProg и установил userProg как двойной, но это не работает. Я немного застрял, и буду благодарен за помощь, если кто-то может мне помочь.

+2

Можете ли вы показать нам свой метод LoadData? –

+3

Вы не присвоили значение, возвращаемое 'CalcProg' переменной. – Luka

+0

, вам, вероятно, нужно установить несколько точек останова и войти в вашу программу и определить основную причину. и ваш метод CalcProg выглядит довольно проводным - почему вы прошли в userProg, когда используете его как локальный varialbe, а значение pass-in никогда не использовалось? – Rex

ответ

5

Фактическая проблема заключается в том, что вы возвращаете int из своего метода, но никогда не используете его. Изменить код:

public static int CalcProg(int userGoal, int userBalance, int userProg) 
{ 
    userProg = userBalance/userGoal; 
    userProg = userProg * 100 
    return userProg; 

} 

private void Form1_Load(object sender, EventArgs e) 
{ 
    //Calls the FileVerification Method 
    FileVerification(); 
    //Sets the label1 transparency to true 
    label1.Parent = pictureBox1; 
    label1.BackColor = Color.Transparent; 
    LoadData(); 

    progressBar1.Value = CalcProg(userGoal, userBalance, userProg); 
    progLabel = Convert.ToString(userProg); 
    label3.Text = progLabel; 


} 
+0

Nice catch. Полностью пропустил это. –

+0

Другими словами, вывод метода CalcProg не используется как вход для чего-либо еще :) –

+0

Или метод 'CalcProg' бесполезен в способе его использования. – Heslacher

0

, если вам нужно изменить сохранение параметров вы передаете метод и использовать, что после вызова метода, то вы можете просто изменить параметр в качестве out параметра

Вы можете вызовите метод как

CalcProg(userGoal, userBalance, out userProg); 

и метод

public static void CalcProg(int userGoal, int userBalance, out int userProg) 
{ 
    userProg = userBalance/userGoal; 
    userProg = userProg * 100; 
} 
Смежные вопросы