Ir ao conteúdo
  • Cadastre-se

Java programa não lê e imprime string


Posts recomendados

programa não lê e imprime string

package main;

import java.util.Scanner;

public class Main{
    
    public static void main(String[] args){
        
        // variaveis do tipo inteiro
        byte num1; // variavel do tipo inteiro.           
        short num2;  // variavel do tipo inteiro maior que o tipo byte.
        int num3;  // variavel do tipo inteiro maior que o tipo byte e short.
        long num4;  // variavel do tipo inteiro maior que o tipo byte,short e int.
 
        // variaveis do tipo caractere.   
        char carac;
        String str;
        
        
        // variaveis do tipo real;
        float num5; // variavel do tipo real.  
        double num6; // variavel do tipo real maior que o tipo float.
        
        Scanner read = new Scanner(System.in);  //objeto para leitura do teclado.
        
        System.out.println("Digite  1 numero inteiro: ");
        num1 =  read.nextByte();
        
        System.out.println("Digite  2 numero inteiro: ");
        num2 =  read.nextShort();
        
        System.out.println("Digite  3 numero inteiro: ");
        num3 = read.nextInt();
        
        System.out.println("Digite  4 numero inteiro: ");
        num4 = read.nextLong();
        
        System.out.println("Digite um Caractere: ");
        carac = read.next().charAt(0);
        
        System.out.println("digite o 1 numero real: ");
        num5 = read.nextFloat();
        
        System.out.println("digite o 2 numero real: ");
        num6 = read.nextDouble();
        
        System.out.println("digite uma string: ");
        str = read.nextLine();
        
        System.out.println("o numero 1 e: "+ num1);
        System.out.println("o numero 2 e: "+ num2);
        System.out.println("o numero 3 e: "+ num3);
        System.out.println("o numero 4 e: "+ num4);
        System.out.println("o caractere digitado e: "+ carac);
        System.out.println("o numero 5 e: "+ num5);
        System.out.println("o numero 6 e: "+ num6);
        System.out.println("a string e: "+str);
        
        
        
        
        
        
        // System.out.println(num1);
        // System.out.println(num2);
        // System.out.println(num3);
        // System.out.println(num4);
        // System.out.println(carac);
        // System.out.println(num5);
        // System.out.printf("o numero e %.2f\n",num6);
        // System.out.format("o numero e %.2f\n",num5);
    }
}

 

Link para o comentário
Compartilhar em outros sites

Como dito pelo @JorgeGus, isso é sujeira no buffer. Esse problema acontece quando você vai ler texto puro após ter lido um dado de tipo não textual.

 

Isso dá pau:

int i = scanner.nextInt();
String s = scanner.nextLine(); // Passa direto

 

Isso dá pau:

boolean i = scanner.nextBoolean();
String s = scanner.nextLine(); // Passa direto

 

Isso dá pau:

double i = scanner.nextDouble();
String s = scanner.nextLine(); // Passa direto

 

Esses abaixo funcionam, porque o lixo do buffer é ignorado automaticamente quando o Scanner vai ler um dado não textual.

 

Isso funciona:

int a = scanner.nextInt();
int b = scanner.nextInt(); // Ignora o lixo automaticamente

 

Isso funciona:

boolean a = scanner.nextBoolean();
int b = scanner.nextInt(); // Ignora o lixo automaticamente

 

É uma boa prática você limpar o buffer sempre após ler um dado não textual, apesar de ser desnecessário se a próxima leitura também for não textual, essa prática garante que seu código não vai quebrar se você mudar a ordem de leitura dos dados.

 

Assim:

int a = scanner.nextInt();
scanner.nextLine(); // Limpa o buffer

String b = scanner.nextLine(); // funciona como esperado
  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!