Gå till innehåll

Enlight Designe

Medlem
  • Innehållsantal

    9
  • Gick med

  • Besökte senast

Inlägg postade av Enlight Designe

  1.  Hej!

     

    Med metoden useDelimiter kan du få Scannern att hoppa över det du vill.

    Gjorde om din kod till ett litet fristående program, så här:

    import java.util.Scanner;
    import java.io.*;
    
    class LasFil {
    	public static void main(String[] args) throws FileNotFoundException{
    	int id, km, min;
    	
    		Scanner sc = new Scanner (new File("resor.txt"));
    		sc.useDelimiter("[; *|\n|\r]+");
    			while (sc.hasNext()){
    			id = sc.nextInt();
    			km = sc.nextInt();
    			min = sc.nextInt();
    			
    				if (km >20 & min <= 60 ){
    				System.out.printf("%s %s %s ", id, km, min);
    				}
    			}
    	}
    }
    

    Kört på dina data, med semikolon, blir resultatet det här:

    1 53 38 2 28 27 5 21 35
    

    Det var så här du menade, eller?

     

    Hej nice ! 

    det var typ en sådan lösningen jag var ute efter men att ID kommer först sen kommer km och min sen sker radbrytningen ska läsa lite om sc.useDelimiter(); har inte riktigt förstått hur den arbetar. 

    jag löste det på detta sätt 

    import java.io.*;
    import java.util.*;
    
    public class huvudapp {
    	
    	private String strID, strKM , strMIN ;
    	private int i;
    	
    	public void lasFil()throws IOException{
    		Scanner sc = new Scanner (new File ("resor.txt"));
    		while (sc.hasNextLine()){
    			String line = sc.nextLine();
    			String [] arr = line.split(";");
    			
    			strID = arr[0];
    			int id = Integer.parseInt(strID);
    			strKM = arr[1];
    			int km = Integer.parseInt(strKM);
    			strMIN = arr[2] ;
    			int min = Integer.parseInt(strMIN);
    			
    			if (km>20 & min<60){
    				System.out.print("ID:"+id+" MIN:"+min+" KM:"+km +"\n");
    				i++;
    			}
    			
    		}System.out.println(i+" persons that made the if statment");
    }
    	public static void main(String[] args) throws IOException { 
    
    		huvudapp mt = new huvudapp (); 
    		mt.lasFil();
    
    	}
    
    }
    
    
    Utskriften
    ID:1 MIN:38 KM:53
    ID:2 MIN:27 KM:28
    ID:5 MIN:35 KM:21
    3 persons that made the if statment
    
  2. Hej ! 

     

    har en text fil som ska läsas in och skrivas ut på konsolen använder eclipse . 

    här är koden som jag har nu som är inne i en metod 

    public void lasFil() throws IOException{
    		sc = new Scanner (new File("resor.txt"));
    		
    		while (sc.hasNext()){
    			id = sc.nextInt();
    			km = sc.nextInt();
    			min = sc.nextInt();
    			
    			if (km >20 & min <= 60 ){
    				System.out.printf("%s %s %s ", id, km, min);
    				}
    			}
    	}
    	
    

    text filen som heter "resor.txt" finns och ser ut så här problemet uppstår när detta tecken kommer upp ";" 

    frågan är då hur kan man säga till Scanner'n att det är här du ska gå till nästa rad eller hoppa över dessa tecken ? 

    1;53;38
    2;28;27
    3;39;72
    4;12;30
    5;21;35
     
    OBS 
    programmet fungerar bra när text filen ser ut så här 
    1 53 38
    2 28 27
    3 39 72
    4 12 30
    5 21 35
    6 19 32
    6;19;32

     

×
×
  • Skapa nytt...