запустить программу Java в терминале через командную строку - PullRequest
0 голосов
/ 24 октября 2018

Я написал программу заданий для чтения в 2 файлах и вывода 2 файлов.Записанный файл записи будет организован и перезаписан в файл результатов.Файл инструкции для чтения будет выполнен, а результаты должны быть сгенерированы в файл отчета.

Проблема в том, что я пытаюсь запустить в терминале так:

cd desktop/lab/bin/java POS18sz.POS /Users/Jan/Desktop/recordFile.txt /Users/Jan/Desktop/instructionFile.txt resultFile.txt reportFile.txt

ничего не происходит, даже я долго жду.Если я пытаюсь закрыть терминал, он говорит: «Если вы хотите закрыть работающую программу?».В коде также нет неправильных указаний, я действительно запутался.

Я нажал run в Eclipse, и пакет автоматически сработал.Поскольку в коде 5 классов и он довольно длинный, какую часть кода мне следует предоставить, чтобы прояснить проблему?

Вот основной класс: пакет POS18sz;

import java.util.Scanner;import java.io. *;

открытый класс POS {public static void main (String args []) {

if(args.length == 4) {  
    Processor pp = new Processor(args);
    pp.recordFile();        
    pp.instructionFile();
    pp.resultFile();
    pp.reportFile();

    }
}
}

Вот класс файлового процессора: package POS18sz;

import java.io.*; 
import java.util.Scanner;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Scanner;


public class Processor {
     private File recordFile;
     private File instructionFile;
     private File resultFile;
     private File reportFile;
     private PetShop petshop;

     public Processor(String[]s) {
        recordFile = new File(s[0]);

        instructionFile = new File(s[1]);
        resultFile = new File(s[2]);
        reportFile = new File(s[3]);

        petshop = new PetShop();

    }   

    public void recordFile() {
        ArrayList<Residents> petshop = new ArrayList<Residents>();
    Residents r1 = new Residents();

    try 
    {   Scanner scan = new Scanner(recordFile); 
        String temp = scan.nextLine();
        String address = null;
        while(scan.hasNextLine())
        {               

                    if(temp.startsWith("name")) 
                    {

                        r1.setName(temp);
                    }
                    else if(temp.startsWith("birthday"))
                    {

                        r1.setBirthday(temp);
                    }
                    else if(temp.startsWith("address")) 
                    {
                        address = temp;

                    }
                    else if(!temp.startsWith("name")&&!temp.startsWith("birthday")&&!temp.startsWith("postcode")&&!temp.startsWith("phone")&&!temp.startsWith("pet"))
                    {                       

                       r1.setAddress(address+","+temp.trim());                  
                    }
                    else if(temp.startsWith("postcode")) 
                    {
                        r1.setPostcode(temp);;
                    }
                    else if(temp.startsWith("phone")) 
                    {
                        r1.setPhone(temp);
                    }
                    else if(temp.startsWith("pet")) 
                    {
                        r1.setPetown(temp);;
                    }
                    else if(temp.equals(""))
                    {
                        petshop.add(r1); //????

                        r1.setName(null);
                        r1.setBirthday(null);
                        r1.setAddress(null);
                        r1.setPostcode(null);
                        r1.setPhone(null);
                        r1.setPetown(null);                                     
                    }

                } //End of while loop



    }catch(FileNotFoundException e) 
    {
        e.printStackTrace();
    }

}

public void resultFile(){
    try
    {
        PrintWriter out = new PrintWriter(new FileOutputStream(resultFile));
        out.println(petshop.toString()); //toString need to be ajusted.
        out.close();
    }
    catch(FileNotFoundException e)
    {
        e.printStackTrace();
    }
}

public void instructionFile() {
    try
    {
        Scanner scan = new Scanner(instructionFile);
        while(scan.hasNextLine())
        {
            String instruction = scan.nextLine();
            Scanner sc = new Scanner(instruction);
            String keyword;
            if(sc.hasNext())
            {
                keyword = sc.next();
                if(sc.hasNextLine())
                {
                    String[]paramup = sc.nextLine().split(";");
                    String toString = Arrays.toString(paramup);

                    if(keyword.equals("update"))
                    {
                        if(petshop.checkPhone(paramup)==true)
                        {
                            for(String s: paramup) {
                                if(s.contains("phone"))
                                {
                                    int index = petshop.getIndex(s);
                                    petshop.update(toString,index);
                                }
                                else
                                {
                                    petshop.add(toString);
                                }
                            }
                         }

/*DELETE*/                      } else if(keyword.equals("delete"))
                    {
                        String []paramde = sc.next().split(";");
                        petshop.delete(paramde[1], paramde[2]);

/*SORT*/                } else if(keyword.equals("sort"))
                    {
                        petshop.sortName();

/*QUERY*/                       } else if(keyword.equals("query"))   
                    {
                        String paramq = sc.nextLine();
                        if(paramq.substring(6,10).equals("name"))
                        {
                            petshop.addqueryInstruction(paramq);


                        } else if(paramq.substring(11).equals("age"))
                        {
                            petshop.addqueryInstruction(paramq);

                        } else if(paramq.substring(6).equals("pet"))
                        {
                            petshop.addqueryInstruction(paramq);


                        }                           
                    } 
                }
            }

        }//End of while loop            
    }//End of try

    catch(FileNotFoundException e)
    {
        e.printStackTrace();
    }
}



public void reportFile() {
    try
    {
        PrintWriter out = new PrintWriter(new FileOutputStream(reportFile));
        String paramq;

        for(int i=0; i<petshop.queryInstructionSize();i++) 
        {
            paramq = petshop.getqueryInstruction(i);
            if(paramq.contains("name"))
            {                   
                out.println(petshop.printTitle("name", paramq.substring(10)));
                out.println(petshop.queryName(paramq.substring(6)));
                out.println(petshop.printEnding());

            }else if(paramq.contains("age"))
            {
                out.println(petshop.printTitle(paramq.substring(6,10), " age"));
                petshop.addage(paramq.substring(6,10));
                out.println("Available pet owner size: "+petshop.getAgeSize());
                out.println("Age profile");
                out.println("Below 18: "+petshop.blow18());
                out.println("Over 18 and Below 65: "+petshop.blow65());
                out.println("Over 65: "+petshop.over65());
                out.println("Unknown: "+petshop.unknown());
                petshop.printEnding();

            }else if(paramq.contains("pet"))
            {
                petshop.printTitle("pet",null);
                petshop.addsuburb();
                petshop.addpets();
                petshop.twodarrayPetSuburb();

                for(int j=0; i<petshop.petkinds();j++)
                {
                    System.out.println(petshop.kind(j)+": "+petshop.amount(j)+"; postcode: "+petshop.suburb(j));
                }
                petshop.printEnding();
            }
        }
        out.close();
    }
    catch(FileNotFoundException e)
    {
        e.printStackTrace();
    }

}

}

1 Ответ

0 голосов
/ 24 октября 2018

В своем коде вы забываете read следующую строку

String temp = scan.nextLine();
while(scan.hasNextLine())
{  

     if(temp.startsWith("name")) {
     .....
     }
     ....

     // read the next line
     temp = scan.nextLine();
}              
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...