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”.
Posta o código como texto para facilitar o pessoal copiar e colar para testar.
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);
}
}
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.
leia 7 nomes, e quando um desses nomes tenha 15 caracteres o sistema imprima “Error”.
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).
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...
}
[/code]Sobre exibir em ordem invertida, o for deverá começar do último indo até o primeiro:
[code]for (int i = nome.length - 1; i > 0; i--)
//fazer restante...
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.
[quote=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.[/quote]
Para ele pegar o primeiro troca de > para maior ou igual, ficando assim:
for (int i = nome.length - 1; i >= 0; i--) {
[code]
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();
}
}[/code]
Agora sim, valewww javaflex…