dynameds's comments

dynameds | 5 months ago | on: Show HN: AI Code Detector – detect AI-generated code with 95% accuracy

import java.io.File; import java.util.Scanner;

public class Main { public static void main(String[] args) { LinkList linkedList = new LinkList(); Scanner scanner = new Scanner(System.in);

        System.out.print("Enter input filename: ");
        String filename = scanner.nextLine();
        
        File file = new File(filename);
        if (!file.exists() || !file.canRead()) 
        {
            System.out.println("Error: Cannot open the file.");
            System.exit(1);
        }
        
        Scanner fileScanner = new Scanner(System.in);
        try 
        {
            fileScanner = new Scanner(file);
        } 
        catch (Exception e) 
        {
            System.out.println("Unexpected error opening file.");
            System.exit(1);
        }
        
        while (fileScanner.hasNextLine()) 
        {
            String line = fileScanner.nextLine();
            if (line.isEmpty()) continue;
            
            int spaceIndex = line.indexOf(' ');
            if (spaceIndex == -1) continue;
            
            String name = line.substring(0, spaceIndex);
            String battingRecord = line.substring(spaceIndex + 1);
            
            processPlayer(linkedList, name, battingRecord);
        }
        
        fileScanner.close();
        displayPlayers(linkedList);
        scanner.close();
    }
    
    public static void processPlayer(LinkList linkedList, String name, String battingRecord) 
    {
        Node curNode = linkedList.search(name);
        if (curNode != null) 
        {
            updateStats(curNode.getPlayer(), battingRecord);
        } 
        else 
        {
            Player newPlayer = new Player(name);
            updateStats(newPlayer, battingRecord);
            linkedList.insert(newPlayer);
        }
    }
    
    public static void updateStats(Player player, String battingRecord) 
    {
        char[] characters = battingRecord.toCharArray();
        for (int i = 0; i < characters.length; i++) 
        {
            char c = characters[i];
            switch (c) 
            {
                case 'H': player.setHits(player.getHits() + 1); break;
                case 'O': player.setOuts(player.getOuts() + 1); break;
                case 'K': player.setStrikeouts(player.getStrikeouts() + 1); break;
                case 'W': player.setWalks(player.getWalks() + 1); break;
                case 'P': player.setHbp(player.getHbp() + 1); break;
                case 'S': player.setSacrifices(player.getSacrifices() + 1); break;
                default: 
            }
        }
    }

    
    public static void displayPlayers(LinkList linkedList) 
    {
        Node current = linkedList.getHead();
        while (current != null) 
        {
            Player player = current.getPlayer();
            
            int atBats = player.getHits() + player.getOuts() + player.getStrikeouts();
            double ba;
            if (atBats == 0) 
            {
                ba = 0.0;
            }
            else 
            {
                ba = (double) player.getHits() / atBats;
            }

            int plateAppearances = atBats + player.getWalks() + player.getHbp() + player.getSacrifices();
            double obp;
            if (plateAppearances == 0) 
            {
                obp = 0.0;
            }
            else
            {
                obp = (double) (player.getHits() + player.getWalks() + player.getHbp()) / plateAppearances;
            }
                        
            
            System.out.printf("%s\t%d\t%d\t%d\t%d\t%d\t%d\t%.3f\t%.3f%n",
                player.getName(), atBats, player.getHits(), player.getWalks(),
                player.getStrikeouts(), player.getHbp(), player.getSacrifices(), ba, obp);
            
            current = current.getNext();
        }
    }
}
page 1