Pomocy char to int

0

Witam!!
Mam taki maly problemik, a mianowicie mam zliczyc sume cyfr numeru telefonu wpisywanego z klawiatury. Nie mam pojecia jak przekonwertowac zmienne "char" na "int". Acha jeszcze jedno jak wykonac petle aby obliczyla sume wszystkich wpisanych cyfr.
Z gory dzieki za sugestie.

0

Jeśli masz pewność, że w Edit masz tylko cyfry to oto jeden z wielu możliwych sposobów:

[code]int sum = 0;
AnsiString a = Edit1->Text;
for (int i=a.Length(); i>0; i--)
sum += a[i]&0xf;[/code]

w zmiennej sum masz sumę cyfr.

(nie daję tagów <cpp>, bo gubią się znaki i wszystko traci sens :|)

0

Hej!!
Musze napisac program, ktory pyta o numer telefonu, a nastepnie wyswietla komunikat: Ten telefon jest w sieci Plus/Era/Idea/Tp (zaleznie od numeru). Dodatkowo pokazuje sume cyfr (Podpowiedz: przydatne funkcje to [String.]substring oraz [String.]charAt ) a jestem kompletnie ciemny w tych sprawach.

0

[String.]substring oraz [String.]charAt

yy - w jakim to ma być języku?? to wygląda na JavaScript :|
poza tym - pomyśl troche, skorzystaj z pomocy - nie licz, że ktoś napisze Ci cały program (choć ten jest banalny aż boli).

0

Moze i jest prosty ale ja myslalem nad tym 3 dni i w tym miejscu sie zacialem. Javy ucze sie od 3 mies i .... Nie wiem jak i na co przekonwertowac zmienna char zeby mozna bylo pozniej dodac te cyfry.

0

To pisz od razu o jaki język chodzi - skąd mamy to wiedzieć.

No dobra... nie mam aktualnie zainstalowanego kompilatora Javy, więc będę pisał prosto z helpa - musisz to sobie dostosować.

//najpierw sprawdzenie, czy dany string jest poprawną liczbą
int sum=0;
if (!WartośćEdita.matches("^[0-9]+$")) /*error - to nie jest liczba*/;
else
{for (int i=WartośćEdita.length()-1; i>=0; i--)
  sum += WartośćEdita.charAt(i);
}

ostatnia linijka powinna bez problemu działać, ale jeśli nie to spróbuj coś jak to:

sum += Integer.parseInt(WartośćEdita.charAt(i));
0

Wklejam caly program ktory do tej pory napisalem. Jak bys mogl cos podpowiedziec. Wszystkie pytania sa w komentarzach. Acha jeszcze jedno z jakiego helpa piszesz o ile mozna wiedziec.

import java.io.*;
public class plik{

	public static void main (String [] p){
BufferedReader brIn = new BufferedReader(new InputStreamReader(System.in));
	

System.out.println("Wprowadź numer telefonu:");

//do zmiennej nr_tel przypisujemy wpisany nr tel

try{String nr_tel = brIn.readLine();

System.out.println("Twoj numer telefonu to: " + nr_tel);

//Okreslamy trzy liczby po ktorych poznamy jaka to siec
	String x = nr_tel.substring( 0, 3 );
	
//dokonuje konwersji trzech cyfr do zmiennej typu int
	int prefix = Integer.parseInt(x);
	
	System.out.println("Prefix " + prefix); 
							
//deklaruje tablice w ktorych bedzie wyszukiwac prefix
		
	int era[] = {601, 602, 603, 608};
	int plus[] = {605, 604, 695, 652};
	int idea[] = {501, 502, 506, 506};
		
//przeszukuje tablice i porownuje z wpisanym nr tel	

for (int i =0; i<4; i++) { 
if (prefix == era[i]) System.out.println("To jest numer era");
if (prefix == plus[i]) System.out.println ("To jest plus");
if (prefix == idea[i]) System.out.println("To jest idea");

else System.out.println("To jest telekomunikacja");  				
				  }

/Jak zrobic zeby jezeli to nie jest komorka wyswietlal tylko raz
komunikat ze to jest telekomunkcja
/

int sum = 0;		 	
for (int i=nr_tel.length()-1; i>=0; i--)
sum += nr_tel.charAt(i);
	System.out.println(sum);

}

//liczy sume ale w kodzie ASCII czy jakims tam

catch(IOException e){System.out.println("Błąd podczas odczytu strumienia.");}
}
}

0

ech...
używaj tagu <cpp> do kolorowania składni - czytelniej to wygląda

dobra - w pierwszym poscie dobrze napisałem (C++) a w drugim zapomniałem o tym.
nr_tel.charAt(i); zamień na nr_tel.charAt(i) & 0xf;
jeśli to nie przejdzie, to użyj alternatywy (poprzedni post)

ale olałeś sprawdzanie czy wprowadzony tekst jest w ogóle liczbą - ja użyłem do tego wyrażenia regularnego

nr_tel.matches("^[0-9]+$")

ale jak bardzo chcesz, to możesz użyć Integer.parseInt(nr_tel)

 i jak wywali exception to ciąg nie jest liczbą

z jakiego helpa? z dokumentacji Java dostępnej na stronie Sun (zassałem sobie na hdd - około 100MB)

dopisz sobie do numerów Ery 692, 694, ... (nie wiem jak inne sieci)

masz już tyle informacji, że powinieneś to sam skończyć

aby "numer tepsy" wypisało raz to w ogóle daj po każdym spełnionym "ifie" instrukcje break czyli:
```cpp
if (...) {system.out....; break;}

a nie łatwiej testować to wyrażeniami regularnymi a nie pętlą?

if (prefix.matches("6(0|9)[02468]")) System.out.println("Era");
else if (prefix.matches("88[08]")) System.out.println("Heyah");
else if (prefix.matches("6(0|9)[13579]")) System.out.println("Plus");
else if (prefix.matches("50[0-9]")) System.out.println("Idea");
else System.out.println("tp");
0

Dzieki za wszystkie wskazowki. Jakos dalem rade. Jeszcze male poprawki i bedzie dobrze
Pozdr

1 użytkowników online, w tym zalogowanych: 0, gości: 1