1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

[Java]Duvidas num programa

Discussão em 'Programação' iniciada por MadOnion, 9 de Março de 2006. (Respostas: 8; Visualizações: 1202)

  1. MadOnion

    MadOnion Folding Member

    Pessoal tenho aqui uma duvida simples... ja tive a procurar no manual da faculdade mas foi sem sucesso.
    Só quero mesmo ler algo que esteja num txt, por exemplo:

    O nome.txt tem o meu próprio nome.
    O Teste.java tem:
    Código:
    import java.util.Scanner;
    
    public class Teste {
    	public static void main(String []args) {
    	Scanner leitor = new Scanner ("nome.txt");
    
    	System.out.println("O meu nome e: "+leitor);
    	}
    }
    
    Obviamente o Teste.java e o nome.txt estão situados na mesma pasta.
    O resto que dá é o seguinte:

    Código:
    O meu nome e: java.util.Scanner[delimiters=\p{javaWhitespace}+][position=0][matc
    h valid=false][need input=false][source closed=false][skipped=false][group separ
    ator=\.][decimal separator=\,][positive prefix=][negative prefix=\Q-\E][positive
     suffix=][negative suffix=][NaN string=\Q?\E][infinity string=\Q?\E]
    
    Algo está a escapar... mas eu não fui ou não dei a aula de leitura de ficheiros, e sei que o procedimento não é este... foi mais um desenrascanço.
    Alguém me consegue safar?
     
    Última edição: 11 de Março de 2006
  2. MadOnion

    MadOnion Folding Member

    Adicionei a linha:
    Código:
    String nome = leitor.next();
    
    E alterei a S.O.P para:
    Código:
    System.out.println("O meu nome e: "+nome);
    [code]
    
    O output agora é:
    [code]
    O meu nome e: nome
    
    :S
     
  3. Lostctrl

    Lostctrl [email protected] Member

    Boas,

    Não uses o Scanner para ler ficheiros com este objectivo, o Scanner permite-te identificar primitivos e trata-los através de regexps. Usa antes isto :

    Código:
        public static void main(String[] args) {
            try {
                BufferedReader in = new BufferedReader(new FileReader("D:/nome.txt"));
                String nome = "";
    
                while ((nome = in.readLine()) != null)
                    System.out.println("O meu nome e: " + nome);
            } catch (FileNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    O que isto faz é que enquanto não terminar o ficheiro (readLine != null) ele despeja-te as linha(s) para a consola. Se tens a certeza que a 1ª linha é preenchida e que tem o que tu queres, retira a linha do while.

    Abraços,
    Lostctrl
     
    Última edição: 10 de Março de 2006
  4. MadOnion

    MadOnion Folding Member

    Obrigado, és sempre tu a safar-me nestas questões de java.
    Eu fiz de outra maneira que não é bem parecida mas cá vai.

    Excerto do código:
    Código:
    public class Teste {
      public void main(String[]args) throws IOException {
        Scanner leitor = new Scanner(new File(args[0]));
    
    E depois de compilar... ao correr fiz "java Teste nome.txt".
    Também serve.
    Mas percebi a tua dica ;)
     
  5. Lostctrl

    Lostctrl [email protected] Member


    Existem imensas formas de abordar e dar a volta à situação :) heheheh

    Abraços,
    Lostctrl
     
  6. MadOnion

    MadOnion Folding Member

    Exatamente, é a arte do desenrascanço. :-D
     
  7. MadOnion

    MadOnion Folding Member

    boas pessoal, ando eu na interminável luta com o java, desta vez é o sudoku.
    Tenho um projecto pra entregar(até ás 00h de hoje 8o ), e tenho aqui algumas duvidas.
    Vou ter que fazer duas classes, uma chamada sudoku, e outra chamada RunSudoku onde tem o main.
    A questão é: Este programa consiste em verificar se uma determinada solução do sudoku está correcta, se estiver tudo bem... se não estiver ele emite uma mensagem, e mostra o jogo errado.
    Na classe sudoku tenho o seguinte:
    Código:
    public class Sudoku2 {
        private int[][] matriz;
        
        public boolean linhas(){
    	
    	for(int i=0; i<8; i++)
    	    for(int j=0; i<8; j++)
    		if(matriz[i][j] == matriz[i+1][j]);
    		    return false;
        }
    
        public boolean colunas(){
    	 
    	for(int i=0; i<8; i++)
    	    for(int j=0; j<8; j++)
    		if(matriz[i][j] == matriz[i][j+1]);
    		    return false;
        }
    }
    
    Eu não faço ideia se este pedaço de código está certo, mas se estiver tudo bem.
    Gostaria que alguem me indicasse a melhor maneira de verificar as regiões do sudoku, ou seja aqueles 3*3 em que não se pode repetir numeros, já que linhas e colunas mal ou bem estão concluidos.
    Se alguem me conseguir safar, agradecia.

    Cumps mad.
     
  8. souto

    souto To fold or to FOLD?

    tambem andas na faculdade de ciencias... mau sitio pra vires expor o teu codigo.
    ha aqui muitos alunos da faculdade.

    inclusive eu.
    era mais inteligente usares as news do DI. digo eu.

    cumprimentos.
     
  9. MadOnion

    MadOnion Folding Member

    Eu não pedi o código, pedi uma ajuda, todo o código é diferente a partir daí.
    Mas também agora deixa de ter efeito, ja foi entregue e já me desfiz do codigo pra não ter mais dores de cabeça.
     

Partilhar esta Página