Dúvida

9 respostas
E

Não estou conseguindo que o sistema imprima os 7 nomes e quando ele ler mais de 15 caracteres o sistema imprima “error”.
Coloquei meu código assim, no entanto gostaria de alguma dica, pois não estou conseguindo achar algum jeito do sistema ler “Error”.

9 Respostas

javaflex

Posta o código como texto para facilitar o pessoal copiar e colar para testar.

E
public class Nomesinversos {

	public static void main(String[] args) {
		Scanner leitor = new Scanner(System.in);

		String nome[] = new String[15];

		for (int i = 0; i < 7; i++) {
			System.out.println("Nome " + (i + 1) + " :");
			nome[i] = leitor.next();
		}
		if (nome.length > 15)
			System.out.println("Error" + nome.length);

	}

}
javaflex

15 caracteres de um elemento (nome) ou 15 elementos no array? Você está testando se passa de 15 elementos e no loop só insere 7 elementos, então nunca vai chegar a 15.

E

leia 7 nomes, e quando um desses nomes tenha 15 caracteres o sistema imprima “Error”.

E

A questão é assim: Faça um Algoritmo para ler 7 nomes de até 15 caracteres cada em um array unidimensional (Vetor) e imprimi-los na tela na ordem inversa de entrada (ou seja, primeiro o último nome e assim por diante).

javaflex
Sobre 15 caracteres teste length() na string de retorno que lê o nome dentro do loop e não no array por fora do loop. Exemplo:
String leitura = leitor.next();

if (leitura.length() > 15) //testando se tem mais de 15 caracteres
{
    System.out.println("error");
}
else
{
    //restante da sua lógica...
}
Sobre exibir em ordem invertida, o for deverá começar do último indo até o primeiro:
for (int i = nome.length - 1; i > 0; i--)
//fazer restante...
E

Eu Fiz basicamente assim:

public static void main(String[] args) {
		Scanner leitor = new Scanner(System.in);

		String nome[] = new String[3];

		for (int i = 0; i < nome.length; i++) {
			System.out.println("Nome: " + (i + 1) + " :");
			nome[i] = leitor.next();

			if (nome[i].length() > 15) {
				System.out.println("Error");
			}
		}
		for (int i = nome.length - 1; i > 0; i--) {
			System.out.println("Nomes: " + nome[i]);

No entanto, no último FOR, ele não está lendo o 1º nome. Não estou conseguindo achar o problema.

javaflex

edersombarros:
Eu Fiz basicamente assim:

public static void main(String[] args) {
		Scanner leitor = new Scanner(System.in);

		String nome[] = new String[3];

		for (int i = 0; i < nome.length; i++) {
			System.out.println("Nome: " + (i + 1) + " :");
			nome[i] = leitor.next();

			if (nome[i].length() > 15) {
				System.out.println("Error");
			}
		}
		for (int i = nome.length - 1; i > 0; i--) {
			System.out.println("Nomes: " + nome[i]);

No entanto, no último FOR, ele não está lendo o 1º nome. Não estou conseguindo achar o problema.

Para ele pegar o primeiro troca de > para maior ou igual, ficando assim:

for (int i = nome.length - 1; i >= 0; i--) {
E
public static void main(String[] args) {
		Scanner leitor = new Scanner(System.in);

		String nome[] = new String[7];

		for (int i = 0; i < nome.length; i++) {
			System.out.println("Nome " + (i + 1) + " :");
			nome[i] = leitor.next();

			if (nome[i].length() > 15) { // testendo se tem mais de 15
											// caracteres
				System.out.println("Error");
			}
		}
		for (int i = nome.length-1; i >= 0; i--) {
			System.out.println("Nomes: " + nome[i]);

		}

		leitor.close();
	}
}

Agora sim, valewww javaflex....

Criado 6 de julho de 2013
Ultima resposta 6 de jul. de 2013
Respostas 9
Participantes 2