Witam! Chciałbym się poradzić, czy istnieje możliwość zapisania zawartości pola tekstowego do tablicy? Chodzi o wpisane w textbox liczby oddzielone od siebie spacjami, by każda z nich była elementem przypuśćmy, że tablicy tab(n)?
Istnieje. string.Split
, żeby podzielić napis i Array.ConvertAll
/ IEnumerable<T>.Select
, żeby zamienić tablicę napisów na tablicę liczb (int.Parse
).
Chodzi o użycie vb.net. Mogę prosić o pomoc w rozwiązaniu tego przykładu?
txtLiczby.Text = "5 10 15 20 25"
Dim Liczby As String = Split(txtLiczby.Text) '??????
Dim tab(5) As Double
'Co z ConvertAll???
For Dim i As Integer = 0 To 5
tab(i) = '.....????
Next
Znajdź w MSDN opis metod, które podałem. Programowanie nie polega chyba na zgadywaniu.
Rozumiem, że użycie wymienionych przez Ciebie funkcji, to jedyna metoda na rozwiązanie problemu?
Ale, ale IMO najprostsza, bo sprowadza się do wywołania trzech metod w jednej linijce.
Nie udało mi się wykorzystać wszystkich wspomnianych przez Ciebie funkcji...
Dim wyrazya As String = txtLos.Text
Dim tablicaa() As String = wyrazya.Split(" ")
gdzie:
txtLos.Text = "5 10 15 20"
Te elementy są dobrze tablicowane w tablicaa, jednak aby móc użyć każdego z nich, muszą być typu Double. I tu rodzi się mój problem konwersji... Gdybym na przykład zechciał użyć drugiego elementu do obliczeń:
Dim a As Double = tablicaa(2)
WartFunk = WartoscCiagu(m, wznx, a)
Funkcja WartoscCiagu jest typu double:
Function WartoscCiaguTabela(ByVal ilosc As Integer, ByVal X As Double, ByVal a As Double) As Double
Dim s As Double
....
return s
End Function
No i do tego możesz użyć Array.ConvertAll
.
Dim tablicaDoubli() As Double = Array.ConvertAll(napis.Split(" "), Function(str As String) Double.Parse(str))
http://msdn.microsoft.com/en-us/library/exc45z53.aspx#Y0
Za jej pomocą możesz cało tablicę, jej wszystkie elementy przekonwertować z jednego typu na inny.
Rev napisał(a)
No i do tego możesz użyć
Array.ConvertAll
.
Dim tablicaDoubli() As Double = Array.ConvertAll(napis.Split(" "), Function(str As String) Double.Parse(str))
Input string was not in a correct format.
Wartość pola tekstowego nie jest pusta, zawiera liczby oddzielone spacjami; w czym więc może tkwić problem?
Pole tekstowe zostaje wypełnione przy wywołaniu funkcji w Subie obsługi przycisku, tablica zaś jest konwertowana we wspomnianym subie.
Mój kod dla powyższych moich linijek wygląda następująco:
Dim wyrazya As String = txtLos.Text
Dim tablicaDoubli() As Double = Array.ConvertAll(wyrazya.Split(" "), Function(str As String) Double.Parse(str))
Przyjrzyj się metodzie double.Parse, to ona wyrzuca wyjątek. Być może masz tam liczby z kropkami, a ustawienia kulturowe uznają przecinek. Albo jest tam jeszcze coś innego niż liczby.
Nawet jeśli double zamieniłem na Integery zarówno w funkcjach, wywołaniach i textboxie, błąd jest ten sam.
ew. możesz to przeładowanie metody Split zamienić na napis.Split(New Char() {" "}, StringSplitOptions.RemoveEmptyEntries)
, będzie bardziej "wyrozumiałe".
Już znam błąd. ostatni znak tablicy był białym pustym znakiem, stąd wyjątek. Pozdrawiam i dziękuję za pomoc! :)
Polecam double.tryparse :) nie rzuca nic, a początkującemu życie ułatwia