Jump to content

Editor de texto


scoelli
 Share

Recommended Posts

Ola

Estou a tentar fazer um editor de texto em java e nao consigo parar a inserção de linhas por inserção de linha vazia, alguem me poderá dar uma dica?

int maxlinhas=100;
String[][] linhas=new String[maxlinhas][];
int fim=0;

char opcao;

do{
 System.out.println("Leitor 1.0");
 System.out.println("(i)nserir linhas no fim (termine com uma linha vazia)");
 System.out.println("(l)Listar linhas");
 System.out.println("(a)pagar última linha)");
 System.out.println("(e)ditar");
 System.out.println("(p)esquisar");
 System.out.println("(c)ontar");
 System.out.println("(s)air");
 System.out.println("Escolha uma Opção: ");

 opcao=input.next().charAt(0);
 switch (opcao){
   //switch opcao inserir linhas no fim
   case 'i':
     System.out.println("introduza uma frase");
     do{
       String[]linha=input.nextLine().split(" ");
       linhas[fim]=linha;
       fim++;
     }while(????????);
Link to comment
Share on other sites

Basicamente estás a abordar o problema de uma forma errada.

Tens que usar o hasNextLine para saber se o input já acabou. Podes tb forçar para ser no máximo 100 linhas nesse ciclo.

"[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31

Life is a genetically transmitted disease, induced by sex, with death rate of 100%.

Link to comment
Share on other sites

Basicamente estás a abordar o problema de uma forma errada.

Tens que usar o hasNextLine para saber se o input já acabou. Podes tb forçar para ser no máximo 100 linhas nesse ciclo.

"[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31

Life is a genetically transmitted disease, induced by sex, with death rate of 100%.

Link to comment
Share on other sites

vamos lá a ver ...

quantos elementos terá o array linhas quando se leu uma linha vazia ?

String[]linha=input.nextLine().split(" ");

È um editor de texto por isso nunca se sabe quantos elementos terá porque o utilizador pode escrever uma linha, duas, so uma frase, no inicio defeni como maximo 100

o array linha está a ser preenchido com o valor lido, linha a linha !!!!

por isso a tua resposta não faz sentido

agora podes verificar o que foi lido (que era a resposta que daria se seguisses a linha de pensamento correcto à minha pergunta) ou podes fazer como o @brunoais referiu, verificar se existe alguma coisa a ler ...

IRC : sim, é algo que ainda existe >> #p@p
Link to comment
Share on other sites

Ola

Relativamente aos elementos, temos 2 arrays: o primeiro [] é o numero de linhas que o utilizador vai escrever, neste caso 100; o segundo[] é o numero de palavras que terá cada linha.

Já consegui sair do primeiro ciclo mas, agora não sei como (l) listar nem (a)apagar

case 'i':
 System.out.println("introduza o texto");
	 do{
		String linha[]=input.nextLine().split(" ");
		   linhas[fim]=linha;
		   fim++;
		 }while(!input.nextLine().equals(" "));

break;


case 'l':

 for (int i=0; i<linhas.length; i++) {
	   for (int j=0; j<linhas[i].length; j++)
				  System.out.println(linhas[i][j]);  // só imprime a ultima linha e dá java.lang.NullPointerException
  }
break;



case 'a':
 ?????
break;


Edited by apocsantos
Link to comment
Share on other sites

Ola

Continuo a não conseguir listar todas as linhas do array, le apenas a última, não consigo perceber porque:

import java.util.Scanner;
public class P1_TP2_EI_SandraCoelli {

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

String[][] linhas=new String[100][];
int fim=0;
char opcao;
do{
System.out.println("Leitor 1.0");
System.out.println("(i)nserir linhas no fim (termine com uma linha vazia)");
System.out.println("(l)Listar linhas");
System.out.println("(a)pagar ultima linha)");
System.out.println("(e)ditar");
System.out.println("(p)esquisar");
System.out.println("(c)ontar");
System.out.println("(s)air");
System.out.println("Escolha uma Opção: ");
opcao=input.next().charAt(0);
switch (opcao){
//switch INSERIR LINHAS
case 'i':
System.out.println("introduza o texto");

do{
 String linha[]=input.nextLine().split(" ");
 linhas[fim]=linha;
 fim++;	
}while(!input.nextLine().equals(" "));
break;

//switch LISTAR LINHAS
case 'l':

for (int i=0; i<fim; i++) {
 for (int j=0; j<linhas[i].length; j++){	
 System.out.print(linhas[i][j]);
 }

 System.out.println();
}

break;
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.