Java-s programban mi lehet a hiba?
Sziasztok!
A segítségeteket szeretném kérni, az alábbi feladat az lenne, hogy a program bekér argumentumban egy txt fájlt és egy betűt, hogy a fájlban található sok számot hogyan ellenőrízze le. Lehet Adóigazolvány szám, Személyi szám és TAJ szám is.
A programot megírtam, le tudja fordítani a fordító, de a lefutáskor nem csinál semmit.
Tudnátok segíteni, mi lehet a hiba?
import java.io.*;
public class szamok{
private static void szemelyi(String forras){
File f1 = new File(forras);
try{
BufferedReader in = new BufferedReader(new InputStreamReader(new FileInputStream(f1)));
String inputLine;
int sor=0;
while ((inputLine = in.readLine()) != null){
int sum=0;
for(int i=0;i<9;i++){
sum=sum+(inputLine.charAt(i)*(i+1));
}
int maradekos=sum%11;
sor++;
if(maradekos!=inputLine.charAt(10)){
System.out.println("Hibás a "+sor+". sorban lévő szám!");
}
if(inputLine.charAt(0)>'9'){
System.out.println("Hibás a "+sor+". sorban lévő szám!");
}
if(maradekos>9){
System.out.println("Hibás a "+sor+". sorban lévő szám!");
}
}
}
catch(IOException e){
System.out.println("Hiba történt!");
System.exit(0);
}
}
private static void taj(String forras){
File f1 = new File(forras);
try{
BufferedReader in = new BufferedReader(new InputStreamReader(new FileInputStream(f1)));
String inputLine;
int sor=1;
while ((inputLine = in.readLine()) != null){
int sum=0;
for(int i=0;i<7;i++){
sum=sum+(inputLine.charAt(i)*(i+1));
}
int maradekos=sum%10;
sor++;
if(maradekos!=inputLine.charAt(8)){
System.out.println("Hibás a "+sor+". sorban lévő szám!");
}
}
}
catch(IOException e){
System.out.println("Hiba történt!");
System.exit(0);
}
}
private static void ado(String forras){
File f1 = new File(forras);
try{
BufferedReader in = new BufferedReader(new InputStreamReader(new FileInputStream(f1)));
String inputLine;
int sor=1;
while ((inputLine = in.readLine()) != null){
int sum=0;
int i=0;
while(i<8){
sum=sum+(3*(i+1));
i=(i+2);
}
i=1;
while(i<8){
sum=sum+(3*(i+1));
i=(i+2);
}
/*for(int i=0;i<8;i=i+2){ //elsőtől indul - páratlan
sum=sum+(3*(i+1));
}
for(int i=1;i<8;i=i+2){ //másodiktól indul - páros
sum=sum+(7*(i+1));
}*/
int maradekos=sum%10;
sor++;
if(inputLine.charAt(0)!='8'){
System.out.println("Hibás a "+sor+". sorban lévő szám!");
}
if(maradekos!=inputLine.charAt(9)){
System.out.println("Hibás a "+sor+". sorban lévő szám!");
}
if(maradekos>9){
System.out.println("Hibás a "+sor+". sorban lévő szám!");
}
}
}
catch(IOException e){
System.out.println("Hiba történt!");
System.exit(0);
}
}
public static void main(String[] args){
if(args[1]=="S"){
szemelyi(args[0]);
}else{
if(args[1]=="A"){
ado(args[0]);
}else{
if(args[1]=="T"){
taj(args[0]);
}
}
}
}
}
/* A személyi azonosító 11. számjegyét úgy kell képezni, hogy a 2. a)-c) pontok szerint képzett tíz számjegy mindegyikét szorozni kell azzal a sorszámmal, ahányadik helyet foglalja el a személyi azonosítón belül. (Első számjegy szorozva eggyel, a 2. számjegy szorozva kettővel és így tovább.) Az így kapott szorzatokat össze kell adni és az összeget tizeneggyel osztani. Az osztás maradéka a 11. számjeggyel lesz egyenlő.
A TAJ szám egy kilenc számjegyből álló szám, amelyben az első nyolc számjegy egy folyamatosan kiadott egyszerű sorszám, amely mindig az előző, utoljára kiadott sorszámból egy hozzáadásával keletkezik. A kilencedik számjegy ellenőrző ún. CDV kód, melynek képzési algoritmusa az alábbi:
A TAJ szám első nyolc számjegyéből a páratlan helyen állókat hárommal, a páros helyen állókat héttel szorozzuk, és a szorzatokat összeadjuk. Az összeget tízzel elosztva a maradékot tekintjük a kilencedik, azaz CDV kódnak."
az 1. számjegy konstans 8-as szám, mely az adóalany magánszemély voltára utal,
Az adóazonosító jel 10. számjegyét úgy kell képezni, hogy a 2. a)-c) pontok szerint képzett 9 számjegy mindegyikét szorozni kell azzal a sorszámmal, ahányadik helyet foglalja el az azonosítón belül. (Első számjegy szorozva eggyel, második számjegy szorozva kettővel és így tovább.)
Az így kapott szorzatok összegét el kell osztani 11-gyel, és az osztás maradéka a 10. számjeggyel lesz egyenlő. A 2. c) pont szerinti születési sorszám nem adható ki, ha a 11-gyel való osztás maradéka egyenlő tízzel. */
Segítségeteket előre is köszönöm
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!