Java tiene la noción de las cadenas de formato, teniendo un gran parecido a formato de cadenas en otros idiomas. Se utiliza en el JDK métodos como String#format() para la conversión de salida.

Me preguntaba si hay una entrada método de conversión similar a C scanf en Java?

  • juse detrás de usted [un link] stackoverflow.com/questions/2506077/…
  • Java tiene la String.format(format, args) (lo que Es bastante similar a printf) Es comprensible que alguien quiere saber si hay un scanf equivalente. No sé por qué esta pregunta es hacia abajo votado.
  • Hay Scanner.next(Pattern pattern) que puede ser utilizado con Scanner.hasPattern(Pattern pattern) para la validación. Referencia: docs.oracle.com/javase/7/docs/api/java/util/… Esta es una pregunta pertinente, por favor, vuelva a abrirlo a la gente !
  • He hecho una drástica editar y presentado para su reapertura. Por lo que vale, estoy de acuerdo.
InformationsquelleAutor Gopichand | 2013-06-07

6 Comentarios

  1. 19

    Echa un vistazo a este sitio, explica dos métodos para la lectura de consola en java, utilizando Scanner o la clásica InputStreamReader del Sistema.en.

    Código siguiente es tomado de la citada página web:

    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    
    public class ReadConsoleSystem {
      public static void main(String[] args) {
    
        System.out.println("Enter something here : ");
    
        try{
            BufferedReader bufferRead = new BufferedReader(new InputStreamReader(System.in));
            String s = bufferRead.readLine();
    
            System.out.println(s);
        }
        catch(IOException e)
        {
            e.printStackTrace();
        }
    
      }
    }

    import java.util.Scanner;
    
    public class ReadConsoleScanner {
      public static void main(String[] args) {
    
          System.out.println("Enter something here : ");
    
           String sWhatever;
    
           Scanner scanIn = new Scanner(System.in);
           sWhatever = scanIn.nextLine();
    
           scanIn.close();            
           System.out.println(sWhatever);
      }
    }

    Se refiere.

    • Puedes por favor decirme el equivalente de scanf(«%d %d %s %f»,a,b,c,d) en JAVA! Creo que es bastante complicado.a la derecha?
    • No hay una coincidencia exacta en java, pero echa un vistazo a la Scanner doc, usted puede leer el tipo específico de datos de stdin. Por ejemplo: int i = scanIn.nextInt(); para la lectura de un int.
    • Lamentablemente no existe ningún método exacto como scanf en java. El mejor enfoque que usted podría hacer es dividir una Cadena y, a continuación, tomar las fichas y los echó. Si alguien difiere conmigo, entonces deme un ejemplo de scanf("%d %d %s %f",a,b,c,d), uno forro equivalente en java!
  2. 1

    Si uno realmente quería que podría hacer allí una versión propia de scanf() así:

        import java.util.ArrayList;
    import java.util.Scanner;
    public class Testies {
    public static void main(String[] args) {
    ArrayList<Integer> nums = new ArrayList<Integer>();
    ArrayList<String> strings = new ArrayList<String>();
    //get input
    System.out.println("Give me input:");
    scanf(strings, nums);
    System.out.println("Ints gathered:");
    //print numbers scanned in
    for(Integer num : nums){
    System.out.print(num + " ");
    }
    System.out.println("\nStrings gathered:");
    //print strings scanned in
    for(String str : strings){
    System.out.print(str + " ");
    }
    System.out.println("\nData:");
    for(int i=0; i<strings.size(); i++){
    System.out.println(nums.get(i) + " " + strings.get(i));
    }
    }
    //get line from system
    public static void scanf(ArrayList<String> strings, ArrayList<Integer> nums){
    Scanner getLine = new Scanner(System.in);
    Scanner input = new Scanner(getLine.nextLine());
    while(input.hasNext()){
    //get integers
    if(input.hasNextInt()){
    nums.add(input.nextInt());
    }
    //get strings
    else if(input.hasNext()){
    strings.add(input.next());
    }
    }
    }
    //pass it a string for input
    public static void scanf(String in, ArrayList<String> strings, ArrayList<Integer> nums){
    Scanner input = (new Scanner(in));
    while(input.hasNext()){
    //get integers
    if(input.hasNextInt()){
    nums.add(input.nextInt());
    }
    //get strings
    else if(input.hasNext()){
    strings.add(input.next());
    }
    }
    }
    }

    Obviamente mis métodos de verificación sólo para las Cadenas y Enteros, si desea que diferentes tipos de datos a ser procesados agregar la correspondiente arraylists y cheques para ellos. También, hasNext() probablemente debería estar en la parte inferior de la if-else if la secuencia desde hasNext() devolverá true para todos los datos en la cadena.

    De salida:

    Give me input:
    apples 8 9 pears oranges 5
    Ints gathered:
    8 9 5
    Strings gathered:
    apples pears oranges
    Data:
    8 apples
    9 pears
    5 oranges

    Probablemente no es el mejor ejemplo; pero, el punto es que Scanner implementa la Iterator clase. Por lo que es fácil para iterar a través de los escáneres de entrada utilizando el hasNext<datatypehere>() métodos; y, a continuación, almacenar la entrada.

  3. 0

    Java siempre tiene argumentos como un tipo de cadena…(String args[]) por lo que necesita para convertir en su tipo deseado.

    • Uso Integer.parseInt() para convertir la cadena en Interger.
    • Para imprimir cualquier cadena de texto que se puede utilizar System.out.println()

    Ejemplo :

      int a;
    a = Integer.parseInt(args[0]);

    y para Entrada Estándar puede utilizar códigos como

      StdIn.readInt();
    StdIn.readString();
    • StdIn no es una clase en java. Creo que es una clase que la gente en Princeton, escribió enlace. Sin embargo, si usted tiene esa clase en el proyecto. Si miramos el código para StdIn que sólo tiene que utilizar un Scanner a leer toda la entrada.
  4. 0

    HAY una simple respuesta

    import java.io.BufferedReader;
    import java.util.Scanner;
    public class Main {
    public static void main(String[] args)
    {
    String myBeautifulScanf = new Scanner(System.in).nextLine();
    System.out.println( myBeautifulScanf );
    }
    }
    • Esto no es más sencillo que el aceptado la respuesta, es la misma.
    • Es la manera menos código, que hace que sea más sencillo. Todos de la importancia de las partes de la aceptó respuesta fueron limpiados de distancia
  5. -6

    Puede dar formato a la salida en Java como se describe en el siguiente fragmento de código.

    public class TestFormat {
    public static void main(String[] args) {
    long n = 461012;
    System.out.format("%d%n", n);      // -->  "461012"
    System.out.format("%08d%n", n);    // -->  "00461012"
    System.out.format("%+8d%n", n);    // -->  " +461012"
    System.out.format("%,8d%n", n);    //-->  " 461,012"
    System.out.format("%+,8d%n%n", n); // -->  "+461,012"
    }
    }

    Usted puede leer más aquí.

Dejar respuesta

Please enter your comment!
Please enter your name here