suma numeros

felipe
09 de Abril del 2008
es un programa que suma numeros pero no veo que esta mal y cuando compilo me sale could not find the main class



import java.lang.*;
import java.io.*;
import java.util.*;
public class DigitalRoots {

/**
* @param args
*/
public static void main(String[] args)throws Exception {
// TODO Auto-generated method stub

int x[], y, i, resultado, j;
i=0;
j=0;
resultado=0;
x= new int[50];
String sCadena;
char caracter;



BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));

while ((sCadena = bf.readLine())!=null) {
for (j=0; j<sCadena.length(); j++){



char caracter = sCadena.charAt(j);
int valor = (int) caracter;

//y= (char) j; //pasa caracter a int
//y= Integer.parseInt(sCadena);

x[i]= valor;
i=+1;

}
for (i=0; i<x.length; i++){
resultado =+x[i];


}
System.out.println("El resultado es : " + resultado );

}
}

}

jaireina
09 de Abril del 2008
Me parece muy buena tu solucion, lo único es que inicializas dos veces la variable caracter y que cuando realizas la suma de los valores obtenidos, sumas los 50 valores del vector, lo cual es un poco ineficiente.
Aqui te dejo mi propuesta, espero que te ayude:


import java.io.*;

public class DigitalRoots{

public static void main(String [] args)throws Exception {
// TODO Auto-generated method stub

int x[], y, i, resultado, j, valor; //declaro la variable valor para que no se declare muchas veces en el for
resultado=0;
x= new int[50];
String sCadena, caracter; // caracter lo declaro como un string porque no se como convertir un caracter en entero, pero si un string

BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));

while ((sCadena = bf.readLine())!=null) {
for (j=0; j<sCadena.length(); j++){
caracter = "" + sCadena.charAt(j); //en la variable caracter guardo el caracter de sCadena en al posicion j
valor = Integer.parseInt(caracter); //convierto el String que contiene un caracter en una variable de tipo int y almaceno en valor
x[j]= valor; //el caracter j de sCadena se almacena en la posicion j del vector x
}

resultado=0;
for (i=0; i<sCadena.length(); i++){ //la suma se hace un número de veces igual al número de caracteres de SCadena
resultado += x[i];
}

System.out.println("El resultado es : " + resultado );

}
}
}

ozito
09 de Abril del 2008
Felipe,

El problema es que declaras dos veces la variable 'caracter'. Debes quitar el 'char' que hay delante de 'caracter' de la línea 'char caracter = sCadena.charAt(j); '

Otra cosa, según tienes el programa el resultado siempre será 0,
debes cambiar la línea "resultado =+x[i];" por: "resultado +=x[i];"

Y otra más;
tal y como tienes el programa lo que hace es sumar los valores ASCII de los caracteres que tecleas en la línea de comandos, para sumar los números debería ser algo como esto:

public static void main(String[] args)throws Exception {
// TODO Auto-generated method stub

int x[], y, i, resultado, j;
resultado=0;
x= new int[50];
String sCadena;
String caracter;
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));

while ((sCadena = bf.readLine())!=null) {
for (j=0; j<sCadena.length(); j++){
caracter = sCadena.substring(j,j+1);
x[j] = (int) Integer.parseInt(caracter);
}
for (i=0; i<x.length; i++){
resultado +=x[i];
}
System.out.println("El resultado final es : " + resultado );
}
}