Saludos
Estoy aprendiendo los conceptos básicos de java, y he estado haciendo pequeños codigos como este que lo que hace es que le pide al usuario el nombre de un archivo que debe abrir y que una vez que este abierto debe leer caracter por caracter e imprimirlo
import java.io.File;
import java.io.FileReader;
import java.io.FileNotFoundException;
import java.util.Scanner;
public class Token {
	public static void main(String[] args) {
		String nombre;
		Scanner teclado = new Scanner(System.in);
		System.out.print("Dame el nombre del archivo: ");
		nombre = teclado.nextLine();
		teclado.close();
		leerArchivo(nombre);
	}
	
	public static void leerArchivo(String nombre)
	{
		try
		{
			int car;
		    File archivo = new File(nombre);
		    FileReader fr = new FileReader(archivo);
		    while((car = fr.read()) != -1)
		       System.out.printf("%d",car);
		}
		catch(FileNotFoundException fileNotFoundException)
		{
			System.out.println("No se pudo abrir archivo");
		}
	}
}
 el problema es que me aparece un error en la linea que me tiene que imprimir los caracteres del archivo y no se por qué, me dice:
The method printf(String,Object[])in the type printStream is not applicable for the arguments (String, int),como puedo resolverlo??
gracias
			
			
			
				CitarThe method printf(String,Object[])in the type printStream is not applicable for the arguments (String, int)
Que raro deberia funcionarte, en fin mejor usa esto y no te compliques tanto.
println(""+car);
Saludos!
			
 
			
			
				Cita de: m@o_614 en 23 Junio 2014, 00:10 AM
The method printf(String,Object[])in the type printStream is not applicable for the arguments (String, int),como puedo resolverlo??
Eso pasa porque estas utilizando  o le haz indicado que uses una versión de java menor o igual a 4. Si estas utilizando un IDE, verifica que la versión de compilación que estés ocupando sea igual o mayor a 5 (no confundas con la versión de JDK que esta utilizando el IDE), que es la versión que soporta AutoBoxing (http://docs.oracle.com/javase/tutorial/java/data/autoboxing.html).
Aunque el parrafo de arriba soluciona el error, te dejo un pequeño resumen de lo que esta sucediendo.
Lo que pasa es que el segundo parámetro recibe un objeto, y le estas pasando int que es un valor primitivo no un objeto, y por lo tanto esta dando un error. A partir de Java 5, se introduce AutoBoxing y UnBoxing que hace conversión automática de primitivo a su Wrapper class (la versión en objeto del primitivo para que entiendas mas fácil) y viceversa.
			
 
			
			
				muchas gracias por sus respuestas, ahora el codigo funciona bien. Una última duda. cómo puedo verificar que la versión de compilación que uso es igual o mayor a 5??? estoy usando eclipse
			
			
			
				Click derecho en el proyecto -> Properties - > Java Compiler
En esa ventana puedes ver la versión de compilación que utiliza el proyecto actual y definir una versión también.
Saludos.