C# mały problem, niby jak w kursie a jednak inaczej

Witam - na studiach mam pierwszy kontakt z C# no i aby nie być ostatnim gamoniem skorzystałem z kursu na tej stronce. bardzo fajny jednakże mam mały problem, niby robie tak samo jak jest w instrukcji a pojawia mi sie komunikat : Error 1 Cannot implicitly convert type 'double' to 'string' Error 2 ; expected i podkreśla ten fragment labelWynik.Text = (Oblicz.PrzeliczPLNEUR(Oblicz.Kwota, Oblicz.EUR))ToString(); czy moge liczyć na waszą pomoc ? oczywiście program dalej nie działa, a w kursie działa.

Odpowiedzi: 6

O ile pamiętam z zajęć programowania - kropka to przecinek, a przecinek to kropka. I trzeba było się dobrze pilnować na każdym kroku :P
XanTyp
Dodano
2012-03-10 23:12:24
nie do końca rozumiem, chodzi o to ze z "palca w kalkulatorze wpisuje wartości z przecinkiem bądz kropką ? no właśnie ze ja tam wprowadzam liczby całkowite, a moze powiniennem dodać jakąś linijke odnośnie przypadków dziesiętnych? rozwiąze to problem ?
luki10
Dodano
2012-03-10 22:48:16
  • BlaSOFT 2012-03-11 12:21:50

    [quote=luki10]no właśnie ze ja tam wprowadzam liczby całkowite[/quote] Musisz coś źle wprowadzać. Metoda [url=http://msdn.microsoft.com/en-us/library/zh1hkw6k.aspx]Convert.ToDouble(String)[/url] wyrzuca wyjątek FormatException, kiedy nie można przekonwertować stringa na double ze względu na nieprawidłowy format. Jeżeli naprawdę podasz tylko liczbę całkowitą (same cyfry bez żadnych spacji, kropek, przecinków, itp.), błąd nie ma prawa wystąpić. Tak poza tym, warto (a nawet powinno się) w programie przechwytywać tego typu wyjątki i wyświetlać użytkownikowi np. message boxa informującego, że podano liczbę w nieprawidłowym formacie. PS. Czy to był tak aż wielki problem, żeby screenshota zapisać po prostu w formacie PNG?

Teraz wszystko jasne. W oknie programu, wpisałeś do textboxa liczbę zmiennoprzecinkową w nieprawidłowym formacie. Pewnie wprowadziłeś kropkę zamiast przecinka (albo na odwrót).
BlaSOFT
Dodano
2012-03-10 22:03:47
błąd to : Nieprawidłowy format ciągu wejściowego format exception was unhandled, wielkość liter racja - ale tam w programie mam dużą Convert.toDouble. wiec to jest Ok.
luki10
Dodano
2012-03-10 21:47:19
DZIĘKUJE ruszyło, ale pojawił sie nowy błąd pokreśla mi: Oblicz.EUR = convert.toDouble(kursEUR.Text); pytanie dlaczego ? cały program = moze ktoś sobie go wklei i zobaczy czy działa ? using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace A { public partial class Form1 : Form { public Form1() { InitializeComponent(); } string[] skroty = { "PLN", "USD", "EUR", "GBP" }; class Waluty { public double Kwota; public double EUR; public double GBP; public double USD; public double PrzeliczPLNEUR(double wej, double wyj) { double wynik = wej / wyj; wynik = Math.Round(wynik, 2); return wynik; } } private void KonwertujWaluty() { Waluty Oblicz = new Waluty(); Oblicz.EUR = Convert.ToDouble(kursEUR.Text); // konwersja stringa to double Oblicz.USD = Convert.ToDouble(kursUSD.Text); Oblicz.GBP = Convert.ToDouble(kursGBP.Text); Oblicz.Kwota = Convert.ToDouble( textBox5.Text); if ((ListaZ.Text == skroty[0]) && (listaNa.Text == skroty[1])) { labelWynik.Text = (Oblicz.PrzeliczPLNEUR(Oblicz.Kwota, Oblicz.EUR)).ToString(); labelWynik.Text += " euro"; } else if ((ListaZ.Text == "PLN") && (listaNa.Text == "USD")) { labelWynik.Text = (Oblicz.PrzeliczPLNEUR(Oblicz.Kwota, Oblicz.USD)).ToString(); labelWynik.Text += " $"; } else if ((ListaZ.Text == "PLN") && (listaNa.Text == "GBP")) { labelWynik.Text = (Oblicz.PrzeliczPLNEUR(Oblicz.Kwota, Oblicz.GBP)).ToString(); labelWynik.Text += " funtów"; } else if ((ListaZ.Text == "EUR") && (listaNa.Text == "PLN")) { //labelWynik.Text = (Oblicz.PrzeliczPLNEUR(Oblicz.Kwota, Convert.ToDouble(kursPLN.Text))ToString(); labelWynik.Text += " zł"; } else { // Jeseli nie wybrano waluty labelWynik.Text = "wybierz waluty!"; } } private void buttonPrzelicz_Click(object sender, EventArgs e) { labelWaluta.Text = ListaZ.Text; KonwertujWaluty(); buttonPrzelicz.Text = "Przeliczono"; buttonPrzelicz.Font = new Font(buttonPrzelicz.Font, FontStyle.Bold); } private void ListaZ_SelectedIndexChanged(object sender, EventArgs e) { if (listaNa.Items.Count < 4) { listaNa.Items.Clear(); listaNa.Items.Add("PLN"); listaNa.Items.Add("EUR"); listaNa.Items.Add("USD"); listaNa.Items.Add("GBP"); } switch (ListaZ.SelectedIndex) { case 0: listaNa.Items.RemoveAt(0); break; case 1: listaNa.Items.RemoveAt(1); break; case 2: listaNa.Items.RemoveAt(2); break; case 3: listaNa.Items.RemoveAt(3); break; } textBox5.Enabled = true; } private void textBox5_TextChanged(object sender, EventArgs e) { buttonPrzelicz.Visible = true; } private void Form1_Load(object sender, EventArgs e) { label1.Text = "Kursy - Podaj..."; } private void oProgramieToolStripMenuItem_Click(object sender, EventArgs e) { Form2 OProgramieForm; OProgramieForm = new Form2(this); OProgramieForm.ShowDialog(); } } }
luki10
Dodano
2012-03-09 19:35:15
  • BlaSOFT 2012-03-09 21:04:47

    [quote=luki10]pojawił sie nowy błąd pokreśla mi: Oblicz.EUR = convert.toDouble(kursEUR.Text); pytanie dlaczego ? [/quote] Jaki błąd się pokazuje? Może chodzi wielkość liter? Powinno być [code]Oblicz.EUR = Convert.ToDouble(kursEUR.Text);[/code] lub [code]Oblicz.EUR = double.Parse(kursEUR.Text);[/code] . [quote=luki10] cały program = moze ktoś sobie go wklei i zobaczy czy działa ? [/quote] To, co wkleiłeś to nie jest cały program.

Nie masz kropki przed ToString(). Powinno być: [code]labelWynik.Text = (Oblicz.PrzeliczPLNEUR(Oblicz.Kwota, Oblicz.EUR)).ToString();[/code]
BlaSOFT
Dodano
2012-03-09 12:11:31
luki10
Dodano:
2012-03-08 23:56:02
Komentarzy:
6
Strona 1 / 1