Foros del Web » Programación para mayores de 30 ;) » Java »

dudas java, Scanner, y variable locales, globales

Estas en el tema de dudas java, Scanner, y variable locales, globales en el foro de Java en Foros del Web. una pregunta, el scanner de JAVA, solo recibe String, no entero por que tengo que pasarlo. a int. cuando hago esto. Código PHP: String teclado = ...
  #1 (permalink)  
Antiguo 21/03/2014, 09:14
 
Fecha de Ingreso: febrero-2013
Ubicación: en mi casa
Mensajes: 541
Antigüedad: 11 años, 1 mes
Puntos: 3
dudas java, Scanner, y variable locales, globales

una pregunta, el scanner de JAVA, solo recibe String, no entero

por que tengo que pasarlo. a int.


cuando hago esto.


Código PHP:
String teclado="";

Scanner entrada=new Scanner(System.in);
teclado=entrada.nextLine(); 
---------------------------------------------------------------------------------------------------------------------------------

2) otra duda... por que me tira error esto

sé cual puede ser el problema , se trata de las variables globales y locales..
asi como esta tira error que es este...


Cita:
Exception in thread "main" java.lang.Error: Unresolved compilation problems:
Cannot make a static reference to the non-static field passentrada
Cannot make a static reference to the non-static field pass

Código PHP:

import java
.util.Scanner;

public class 
practice {
    
    
int pass;
    
String passentrada;
    
    
    public 
practice(){
        
        
pass=0;
        
passentrada="";
    }
    
    public static 
void main(String[] args){
        

        
        
System.out.println("Bienvenido \n Ingrese la clave para ingresar al sistema");

        do{
          
System.out.println("Numero de clave:");
          
Scanner entrada=new Scanner(System.in);
          
passentrada=entrada.nextLine();
          
pass=Integer.parseInt(passentrada);
          
          if(
pass!=0){
              
libreria.borrado();
          } 
pero se arregla, cuando declaro y defino las variables en el MAIN... es raro...

asi masomenos

Código PHP:
    public static void main(String[] args){
        
        
int pass=0;
        
String passentrada="";

        
        
System.out.println("Bienvenido \n Ingrese la clave para ingresar al sistema"); 

---------------------------------------------------------------------------------------------------------------------------------

3) ah y en JAVA existe eso de limpiar el buffer, o algo como sucedia en lenguaje C???

Última edición por aldo_rengo; 21/03/2014 a las 09:19
  #2 (permalink)  
Antiguo 21/03/2014, 11:10
Avatar de farfamorA  
Fecha de Ingreso: noviembre-2010
Ubicación: Lima
Mensajes: 136
Antigüedad: 13 años, 4 meses
Puntos: 24
Respuesta: dudas java, Scanner, y variable locales, globales

Un consejo, debes coger un libro, uno bueno que te ayude a entender las nociones básicas. Todas tus preguntas no son más que falta de lectura que el capítulo 1 de un buen libro de Java te ayudará a resolver.
  1. No sé cual es tu pregunta porque en ninguna parte pusiste el signo de interrogación, solo expusiste tus ideas. Y se nota que no has leído la documentación de la clase Scanner, pues te hubieras dado cuenta que esa clase tiene más métodos que el nextLine() que estás utilizando: tiene nextInteger(), nextDecimal(), nextFloat(), ...
  2. Cannot make a static reference to the non-static field passentrada (passentrada). Ahí está tu respuesta. No puedes hacer una referencia de un atributo no estático dentro de un método estático (main).
  3. ¿A qué buffer te refieres?
  #3 (permalink)  
Antiguo 21/03/2014, 13:32
 
Fecha de Ingreso: febrero-2013
Ubicación: en mi casa
Mensajes: 541
Antigüedad: 11 años, 1 mes
Puntos: 3
Respuesta: dudas java, Scanner, y variable locales, globales

ok, la

1- esta bien . es entendible...
2- y como funciona.. entonces..?

es algo tonto, lo que no funciona...

osea,... en la clase, creo una variable...de tipo string,
es de uso global en toda la clase.

si bien, main es ESTATICO...
la variable,propiedad ES GLOBAL..
osea... puede ser cierto ya que si uso ese metodo, desde fuera de la clase,
-por ser estatico-

las variables no estarian declaradas... se entiende el error...
pero la variable creada en la clase es global..
o solo es de uso, en otras funciones. que no sean estaticas...
------------------
  #4 (permalink)  
Antiguo 21/03/2014, 13:52
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 6 meses
Puntos: 454
Respuesta: dudas java, Scanner, y variable locales, globales

Para el tema de static, echa un ojo a esto a ver si te aclara http://chuwiki.chuidiang.org/index.php?title=Static

Si con lo de limpiar buffer como existia en C te refieres del free() de C (liberar memoria que ya no se necesita), en java no existe. Java libera automáticamente la memoria que no necesita y no tienes que preocuparte de liberarla. El proceso java que se encarga de ese limpiado de memoria se llama recolector de basura.

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #5 (permalink)  
Antiguo 21/03/2014, 14:43
 
Fecha de Ingreso: febrero-2013
Ubicación: en mi casa
Mensajes: 541
Antigüedad: 11 años, 1 mes
Puntos: 3
Respuesta: dudas java, Scanner, y variable locales, globales

mmm si , con agregarle el STATIC a las variables, se arreglaron...

bueno,. a las variables que use, en MAIN, seran STATIC...
habra otras que sean privadas, pero que su acceso. sea por otros funciones(metodos)

bueno ahora me queda claro..

-------------------------------


lo de liberar memoria , si lo habia escuchado, en una clase de java (la unica que fui)

en lenguaje C, era el "fflush stdin"

busque en google...

"fflush stdin en java" y aparecen algunas cosas, pero creo que todo termina en que java, tiene un recolector de basura.
  #6 (permalink)  
Antiguo 21/03/2014, 15:51
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 6 meses
Puntos: 454
Respuesta: dudas java, Scanner, y variable locales, globales

No es lo mismo.

Una cosa es liberar memoria que no se usa (free en C, recolector de basura en java).

Otra cosa es obligar a un stream a escribir los bytes que puede tener en memoria y no ha escrito. Por ejemplo, cuando escribes en disco duro un fichero, es más costoso hacer muchas escrituras pequeñas que una grande, por eso las clases java o C que escriben en disco, muchas veces son listas y los datos que tu escribes los van guardando en memoria. Cuando tienen bastantes datos, hacen una única escritura en disco. Esas clases, tanto java como C, tienen un método flush() que obliga a escribir en disco todo lo que tengan en memoria, independientemente de que sea mucho o poco. En general no es bueno llamar a flush() porque pierdes la eficiencia que te da la clase al hacer una única escritura grande, pero a veces es necesario hacer esa llamada a flush(). Mira por ejemplo la clase java BufferedWriter http://docs.oracle.com/javase/7/docs...redWriter.html Veras que tiene un método flush()

Puesto que hablabas de Scanner y de stdin, simplemente indicar que no tiene ningún sentido hacer un flush de algo donde se lee, sólo lo tiene sentido en escritura. Hay algunos compiladoes de C/C++ que interpretan un flush de stdin como descartar el resto de datos que haya disponibles, pero no es un comportamiento estándar y puede que unos compiladores lo hagan así y otros no. Es mejro hacer una lectura real y tirar lo que no quieras que hacer un flush stdin. En el caso de java no existe flush de un stream de lectura (Scanner, ...)

Se bueno.
__________________
Apuntes Java
Wiki de Programación

Etiquetas: dudas, globales, locales, scanner, string, variable
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:51.