PDA

View Full Version : Problemi con JAVA


anna182
19-05-2004, 08:50
salve ho un piccolo problema con java ho creato un codice in grado di verificare se un dato Ibutton ha l'accesso o meno ad una porta...

il codice si presenta nel seguente modo: riceve come parametri IDutente e IDPorta e ritorna un boolean...true se l'utente ha l'accesso false se l'utente non ha l'accesso... la mia funzione dovrebbe leggere un file chiamato accesso.txt che e strutturato nel seguente modo:

IDPORTA1;IDPORTA2;...
IDUtente1;IDUtente2;IDutente3;...
255;0;255;

La terza riga del file equivale al permesso dell'utente...le porte comandate da TINI sono 8 (io ora provo il file su una porta sola...) quindi evidentemente se l'utente1 ha come permesso 255 potra entrare in tutte le porte...mentre se il permesso equivale a 0 non potra entrare in nessuna porta e via di seguito...il problema e che qls permesso io metta nella terza riga la mia funzione ritorna TRUE... ce qlc che sa perche??? potete aiutarmi??? non so piu cosa fare....:muro:

import java.lang.*;
import java.util.*;
import java.io.*;
import java.util.StringTokenizer;

public class GestioneAccessi{
private static String FileName;
String s="";
BufferedReader input = null;
int posporta;
int posutente;
boolean accessoOK = false;

public static void main (String []args){
int posporta;
int posutente;
if (verificaAccessi(args[0], args[1])) {
System.out.println("puo entrare");
}
else
{
System.out.println(" non puo entrare");
}

}

public static String getAccessFile(){
return(FileName);
}

public static void setAccessFile(String FileName){
FileName = "accesso.txt";
}

public static boolean verificaAccessi(String IDUtente, String IDPorta){

int mask;
int accesso;
int posporta;
int posutente;
String token="-1000";
boolean accessoOK = false;

int posaccesso = 0;
String s="";
BufferedReader input = null;
try{
input = new BufferedReader(new FileReader("accesso.txt"));
}
catch(FileNotFoundException E1)
{
E1.printStackTrace();
}
try{
s = input.readLine();
}
catch(Exception E2)
{
E2.printStackTrace();
}

posporta = Fposizione(IDPorta,s);

try{
s = input.readLine();
}
catch(Exception E2)
{
E2.printStackTrace();
}

posutente = Fposizione(IDUtente,s);

try{
s = input.readLine();
}
catch(Exception E2)
{
E2.printStackTrace();
}
System.out.println("prova s1: "+s);
StringTokenizer st = new StringTokenizer(s);
System.out.println("prova s2: "+s);
int i=0;
while (st.hasMoreTokens() && i <= posutente)
{
token = st.nextToken(";");
i++;

}

int accCode = Integer.parseInt(token);
System.out.println("Token: "+token);
System.out.println("Codice accesso: "+accCode);
System.out.println("Pos utente "+posutente);
System.out.println("Pos porta "+posporta);

accessoOK = (accCode & (0x1 << posporta)) != 0;

return accessoOK;

}

public static int Fposizione(String IDButton, String s){

int i = 0;
StringTokenizer st = new StringTokenizer(s);
while (st.hasMoreTokens())
{
String token = st.nextToken(";");
if(token.equals(IDButton)){
return i;
}
else{
i++;
}
}
return -1;
}

}


FILE ACCESSO.TXT

5B0000018A1B5409;
0E0000008F33A802;0B00000034D4D602;
0;255;

kingv
19-05-2004, 09:41
a me ritorna "non puo' entrare" per il primo utente e "puo' entrare" per il secondo...

ho sbagliato io a provare?