Programa não espera entrada de dados

2 respostas
airtonarantes

Olá, estou fazendo um programa que recebe um número e um símbolo. O programa deve criar um quadrado com os símbolos que eu coloquei como entrada. Exemplo:
Digite o lado do quadrado: 4
Digite o simbolo: *
Resultado:
****
****
****
****

O problema é que na hora de entrar com o símbolo o programa simplesmente pula essa parte. O código é esse abaixo:

import java.util.Scanner;

public class QuadradoAsterisco {
    
    public void squaresOfSymbol(int side, String simbolo)
    {
        for(int i = 0 ; i < side ; i++)
        {
            for(int j = 0 ; j < side ; j++)
                System.out.printf("%s",simbolo);
            System.out.println();
        }
    }

    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        QuadradoAsterisco ob = new QuadradoAsterisco();
        
        int s;
        String c;
        
        System.out.print("Digite o lado: ");
        s = input.nextInt();
        //System.out.println();
        System.out.print("Digite o simbolo: ");
        c = input.nextLine();
        //System.out.println();
        ob.squaresOfSymbol(s,c);
    }

}

Execução do programa usando NETBEANS

deps-jar:
compile:
run:
Digite o lado:
4
Digite o simbolo:
:?: ESSA PARTE O PROGRAMA NAO ESPERA PARA EU DIGITAR O SÍMBOLO :?:

BUILD SUCCESSFUL (total time: 2 seconds)

2 Respostas

S

se no lugar d vc usar o

c = input.nextLine();

vc usar

c = input.next();

acho q assim funciona…

airtonarantes

Pois é, deu tudo certo, acharia melhor se voce pudesse ter explicado, mas aí eu fui olhara API e encontrei isso.

public String next()
Finds and returns the next complete token from this scanner. A complete token is preceded and followed by input that matches the delimiter pattern. This method may block while waiting for input to scan, even if a previous invocation of Scanner.hasNext returned true.

Muito Obrigado

Criado 15 de julho de 2008
Ultima resposta 15 de jul. de 2008
Respostas 2
Participantes 2