String...

yo
03 de Marzo del 2006
Tengo el siguiente trozo de código:

String s;
for(int i=1;i<f;i++)
{if(f%i==0)
{suma=suma+i;
s+=i + ",";
}
}
if(suma==f) System.out.println(s);

El caso es que me da error en:
...Práctica 2\src\práctica2\Main.java:39: variable s might not have been initialized
s+=i + ",";
...Práctica 2\src\práctica2\Main.java:44: variable s might not have been initialized
System.out.println(s);

Además he añadido la librería java.lang.String... el caso es que estr trozo de código lo he sacado de un programa que estoy haciendo y quizás algunas cosas no cuadren... pero ya he dicho donde me dan a mi los errores... a ver si me pudiéseis ayudas. Gracias si eso.

NoDo
03 de Marzo del 2006
Hola!
Bien, no me hagas mucho caso, pero creo que es tan sencillo como poner donde tienes String s; lo siguiente:

String s= ""; (dos comillas dobles, las que están en el nº 2 del teclado).

Creo que así ya la inicializas y no te da error.
Lo que sí, has de fijarte que si te da error, es porque habrá algun momento en que la variable 's' no vale nada.

Bien, espero haberte ayudado.
Un saludo.

Diego
03 de Marzo del 2006
s es una referencia a un objeto no instanciado. Instáncialo con una cadena vacía así:
String s="";
o asÍ:
String s=new String();
También puedes usar un StringBuilder que es más eficiente a la hora de concatenar cadenas y evita tener que crear muchos Strings inmutables que te llenen la memoria. Así:
StringBuilder cadenaAux=new StringBuilder();
...
cadenaAux.append(...);
...
String s=cadenaAux.toString();
Así el programa será más eficiente. Espero que te sirva.

yo
03 de Marzo del 2006
Gracias por intentar ayudarme. Ahora tengo otro problema con el programa:

import java.lang.String;
---------------------------------------
String s=new String(); (con String s=""; también me sale el mismo problema)
---------------------------------------
int suma=0;
for(int i=1;i<f;i++)
{if(f%i==0)
{suma=suma+i;
s+=i + ",";
}
}
---------------------------------------
System.out.println(s);

Ahora el problema es este:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
at práctica2.Main.main(Main.java:30)
Java Result: 1

A ver si se os ocurre algo. Gracias por leerme.
Respecto a la última parte de la última ayuda que me habéis ofrecido, aun no he llegado y tengo que valerme de cosas más básicas, pero gracias.