String...
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.
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.
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.
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.
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.
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.
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.
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.