无法以正确的方式格式化输出

时间:2018-05-30 16:32:29

标签: java

我有这段代码来读取此类文件的每一行“603,The Matrix,1999-03-30,63000000,136,7.9,9079” 但我只需要读取前3个参数,第3个参数分别是需要单独读取的日期,因此需要将年份放入var中,将月份放入其他var中,然后将该日期放入另一个var但输出中我得到的是:“[603 | The Matrix | 03-603,The Matrix,1999-1999-03-30”

        int i;
        Scanner leitorFicheiroFilmes = new Scanner(ficheiroFilmes);
        ArrayList<Filmes> filme = new ArrayList<>();
        for (i = 0; leitorFicheiroFilmes.hasNextLine(); i++) {
            String line = leitorFicheiroFilmes.nextLine();
            String dados[] = linha.split(",");
            if (dados.length == 7) {
                int idFilme = Integer.parseInt(dados[0]);
                String titulo = dados[1];
                String dadosNew[] = line.split("-");
                String ano = dados[2];
                String mes = dadosNew[0];
                String dia = dadosNew[1];
                filme.add(new Filmes(idFilme, title, year, month, day, parseActoresFile(), parseGenerosFile(idFilme)));

            }
        }

这是带有构造函数的类:

 public class Filmes {
     int idFilme;
     String titulo;
     ArrayList<Actores> actores = new ArrayList<Actores>();
     ArrayList<GenerosCinematograficos> generos = new        ArrayList<GenerosCinematograficos>();
    String year, month, day;

     public Filmes(int idFilme, String titulo, String year, String month,     String day, ArrayList<Actores> actores, ArrayList<GenerosCinematograficos>  generos) {
         this.idFilme = idFilme;
         this.titulo = titulo;
         this.year = year;
         this.month = month;
         this.day = day;
         this.actores = actores;
         this.generos = generos;
     }

     public String toString() {
         return idFilme + " | " + titulo + " | " + dia + "-" + mes + "-" + ano;
     }

 }

3 个答案:

答案 0 :(得分:1)

String dadosNew[] = line.split("-");

必须是

String dadosNew[] = dados[2].split("-");

dadosNew数组将为[1999,03,30],您可以通过访问正确的索引来获取日期,月份和年份。

答案 1 :(得分:0)

解析日期时,您正在为变量读取不正确的值

String dadosNew[] = line.split("-");
String ano = dados[2];
String mes = dadosNew[0];
String dia = dadosNew[1];

String dadosNew[] = dados[2].split("-");
String ano = dadosNew[0];
String mes = dadosNew[1];
String dia = dadosNew[2];

答案 2 :(得分:0)

问题在于:

String dadosNew[] = line.split("-");

输入(line)为"603,The Matrix,1999-03-30,63000000,136,7.9,9079"结果将为:

{"603,The Matrix,1999", "03", "30,63000000,136,7.9,9079"}

您想要仅拆分日期,这包含在dados[2]中,因此要纠正它,您必须这样做:

String dadosNew[] = dados[2].split("-");