Hola. Anduve probando un poco y me topé con esto.
Con la primer clase me resulta bien:
import java.util.Scanner;
public class ConAsignarBucle {
private static int total=0;
private static int permiteBucle=-1;
public ConAsignarBucle (){
total=0;
permiteBucle=-1;
}
public static void main (String [] args) {
Scanner teclado=new Scanner (System.in);
System.out.println ("Escriba un numero. Escribir 0 indica que ha terminado :");
while (permiteBucle !=0){
permiteBucle=teclado.nextInt ();
total+=permiteBucle ;
if (permiteBucle!=0)
System.out.print ("Escriba un numero: ");
}
System.out.println ("El total es : "+total);
}
}
Probé poner a esto
if (permiteBucle!=0)
System.out.print ("Escriba un numero:");
ponerle corchetes (perdon, aun no me se bien los nombres de cada linea, parte)
if (permiteBucle!=0) {
System.out.print ("Escriba un numero:");
}
La clase sigue funcionando bien. Pero por qué? Agregar corchetes no deberia afectar al código?
Las llaves
{ } debés usarlas siempre.
Probá en esta parte:
System.out.print ("Escriba un numero:");
de dejarlo así por ejemplo:
System.out.print ("Escriba un numero:");
System.out.print ("Escriba otro numero:");
y posiblemente el programa no ejecute la segunda instrucción
System.out.print ("Escriba otro numero:");eso sucede porque al código le está faltando las llaves, siempre va a salir la primer instrucción y no las demás, ya que no están las llaves puestas, voy con 1 ejemplo en C++, que es similar a C# para que entiendas mejor:
#include <iostream>
using namespace std;
int main() {
int num = 10;
if (num == 20)
cout << "Mensaje 1" << endl;
cout << "Mensaje 2" << endl;
cout << "Mensaje 3" << endl;
cout << "Mensaje 4" << endl;
}
este programa muestra en la consola los siguientes mensajes:
Mensaje 2
Mensaje 3
Mensaje 4aaaahhh porqué pasa eso???? Si supuestamente está bien la identación?
![Girar ojos ::)](https://aprenderaprogramar.com/foros/Smileys/default/rolleyes.gif)
¿Que acaso no debería imprimer el mensaje
4 solamente?, pues no!
Justamente porque como bien decía, al no usar llaves, solamente se ejecutará la primer instrucción o cualquier que sea después de la primera, como en este caso, que la variable num no es igual a 20, pero sin embargo se ejecutan las 2 instrucciones que son:
cout << "Mensaje 2" << endl;
cout << "Mensaje 3" << endl;
ahora, que pasaría si yo al código lo dejo así?:
#include <iostream>
using namespace std;
int main() {
int num = 10;
if (num == 20) {
cout << "Mensaje 1" << endl;
cout << "Mensaje 2" << endl;
cout << "Mensaje 3" << endl;
}
cout << "Mensaje 4" << endl;
}
me imprime solamente el mensaje
4, muy bien! eso es porque se ha utilizado las llaves y en C++ por lo menos la identación no es lo requerido para los programas, lo requerido son las llaves, por eso lenguajes como C, C++, C#, etc. se diferencian de los demás por las llaves
{ }Para que no queden dudas sobre tu pregunta, vamos a probar estos 2 programas:
#include <iostream>
using namespace std;
int main() {
int num = 10;
if (num == 20) {
cout << "Mensaje 1" << endl;
cout << "Mensaje 2" << endl;
cout << "Mensaje 3" << endl;
}
cout << "Mensaje 4" << endl;
}
y ahora este:
#include <iostream>
using namespace std;
int main() {
int num = 10;
if (num == 20) {
cout << "Mensaje 1" << endl;
cout << "Mensaje 2" << endl;
cout << "Mensaje 3" << endl;
}
cout << "Mensaje 4" << endl;
}
oohhh vaya que identación de mala!!!!!!! jajaja pero el programa funciona perfectamente, es decir que solamente muestra "Mensaje 4", como dije, la sintáxis de C++ y C# en cuanto al conjunto de instrucciones, funciones, seteo de variables, etc. que se ejecutarán en un condicional por ejemplo, son las llaves, no la identación.
De la misma manera que el
; (punto y coma) es totalmente requerido en
C#, de la misma forma débes acostumbrarte a usar siempre las llaves
{ }![Sonrisa :)](https://aprenderaprogramar.com/foros/Smileys/default/smiley.gif)
Te mando 1 abrazo maestro! Buena suerte con tu programa!!
![Sonrisa :)](https://aprenderaprogramar.com/foros/Smileys/default/smiley.gif)