Member 13954890 Ответов: 3

Как добавить элементы массива char после преобразования его из строки, чтобы получить числовое значение(а не значение ascii)


import java.util.*;
public class LuckyNum {
	public static void main(String args[])
	{
		String no="1234";
		char ch[]=no.toCharArray();
		int sum=0;
		for(int i=0;i<4;i++)
			{
			sum=sum+(int)ch[i];}
		System.out.println(sum); 
	}

}


Что я уже пробовал:

Здесь мне нужно преобразовать строку в массив символов, чтобы я мог добавить каждый элемент строки(строка числовая), но ожидаемый выход 10, а фактический выход 202.

3 Ответов

Рейтинг:
8

OriginalGriff

Что ж... вы можете воспользоваться порядком набора символов, который имеет " 0 " тогда '1', '2', ... '9' в таком порядке.
Таким образом, вычитание '0' из каждого символа даст вам значение:

import java.util.*;
public class Main {
    public static void main (String args[]) {
        String no = "1234";
        char ch[] = no.toCharArray ();
        int sum = 0;
        for (int i = 0; i < 4; i++) {
            sum = sum + (int) (ch[i] - '0');
            } 
        System.out.println (sum);
        } 
    }
Но... Я настоятельно рекомендую вам проверить свои входные данные, проверив, что они сначала являются цифрами!


CPallini

5.

Рейтинг:
20

CPallini

Заменять

Цитата:
sum=sum+(int)ch[i];

с
sum = sum + (int)(ch[i] - '0');


Maciej Los

Ты был быстрее меня, Карло.
5ed!

CPallini

Большое тебе спасибо, Мацей!

MadMyche

Вы оба были +5'd

CPallini

Спасибо!

Рейтинг:
17

Maciej Los

То, что вы делаете в своем коде, - это преобразование char в код ascii, а затем получение их суммы. Вот почему ваш результат равен 202, а не 10.

Проверить это: Как я могу преобразовать символ в int в Java? - переполнение стека[^]

Цитата:

char x = '9';
int y = Character.getNumericValue(x);   //use a existing function
System.out.println(y + " " + (y + 1));  // 9  10

или

char x = '9';
int y = x - '0';                        // substract '0' code to get the difference
System.out.println(y + " " + (y + 1));  // 9  10


CPallini

У меня есть 5, "медленный человек":- D

MadMyche

Вы оба были +5'd

Maciej Los

Спасибо :D

Maciej Los

Большое спасибо.