Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/346.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java中读取文本文件的特定行_Java_Java.util.scanner_File Handling_File Read - Fatal编程技术网

在Java中读取文本文件的特定行

在Java中读取文本文件的特定行,java,java.util.scanner,file-handling,file-read,Java,Java.util.scanner,File Handling,File Read,我是Java新手。我正在尝试在文本文件上建立数据库(不要问我为什么)。我想做的是读取文本文件的特定行 文本文件: Salary 3,400 21/12/2015 Tax Refund 3 22/12/2015 Tax Refund 320 23/12/2015 Savings Deposit 1,230 23/12/2015 Bonus 343 23/12/2015 每3行有一个新条目。例如,类别为工资,金额为3400,日期为2015年12月21日。我想做的是只读取金额(例如3400 3 32

我是Java新手。我正在尝试在文本文件上建立数据库(不要问我为什么)。我想做的是读取文本文件的特定行

文本文件:

Salary
3,400
21/12/2015
Tax Refund
3
22/12/2015
Tax Refund
320
23/12/2015
Savings Deposit
1,230
23/12/2015
Bonus
343
23/12/2015
每3行有一个新条目。例如,类别为工资,金额为3400,日期为2015年12月21日。我想做的是只读取金额(例如3400 3 320 1230等)。我唯一成功的做法是通过将行与true print语句匹配来打印行,代码如下:

while(opnEsoda.hasNext()) { // diabazei kathe seira sto txt
    // diabazei kathe seira kai emfanizei to value tis kathe mias ana 3.
    System.out.print("You got money from: " + opnEsoda.nextLine()+ ", "); 

    System.out.print("Amount: " + opnEsoda.nextLine()+", ");
    System.out.print("Date: " + opnEsoda.nextLine()+". ");               
    System.out.println(); 
} 
optnesoda
是扫描仪,用于打印:

You got money from: Salary, Amount: 3,400, Date: 21/12/2015. 
You got money from: Tax Refund, Amount: 3, Date: 22/12/2015. 
You got money from: Tax Refund, Amount: 320, Date: 23/12/2015. 
You got money from: Savings Deposit, Amount: 1,230, Date: 23/12/2015. 
You got money from: Bonus, Amount: 343, Date: 23/12/2015.

跳过其他几行:-)


跳过其他几行:-)


您可以使用下面的JAVA8代码,以字符串列表的格式获取文件。 很容易检索列表的行号“n”

        int n=2;
        List<String> fileLines = Files.readAllLines(Paths.get("c:\\abc.txt"));
        while(n<fileLines.size()){
            fileLines.get(n);
            n+=3;
        }
int n=2;
List fileLines=Files.readAllLines(path.get(“c:\\abc.txt”);

而(n您可以使用下面的JAVA8代码,以字符串列表的格式获取文件。 很容易检索列表的行号“n”

        int n=2;
        List<String> fileLines = Files.readAllLines(Paths.get("c:\\abc.txt"));
        while(n<fileLines.size()){
            fileLines.get(n);
            n+=3;
        }
int n=2;
List fileLines=Files.readAllLines(path.get(“c:\\abc.txt”);

然而(在我看来,这比跳过行要干净一些,它允许您访问跳过的元素,以备以后需要:)

do
{
字符串[]项=新字符串[3];
对于(int i=0;i<3;i++)
{
if(optnesoda.hasnetline())
{
//修剪删除前导或尾随空格。
条目[i]=optnesoda.nextLine().trim();
}
}
System.out.println(条目[2]);
}
while(opnEsoda.hasNextLine)

我认为这比跳过行要干净一些,它允许您访问跳过的元素,以备以后需要:)

do
{
字符串[]项=新字符串[3];
对于(int i=0;i<3;i++)
{
if(optnesoda.hasnetline())
{
//修剪删除前导或尾随空格。
条目[i]=optnesoda.nextLine().trim();
}
}
System.out.println(条目[2]);
}
while(opnEsoda.hasNextLine)

问题是什么?@sidgate我需要做什么,只打印金额?(例如340033201230等)。可能重复:问题是什么?@sidgate我需要做什么,只打印金额?(例如340033201230等)。可能的副本:谢谢。成功了。下一步我要做的是对这些数字求和,取每个数字的日期并打印周、月和年的统计数据。剩下的应该很简单,有一些位置合适的数学运算符。@Alexandredis,谢谢。成功了。下一步我要做的是对这些数字求和,取每个数字的日期并打印周、月和年的统计数据。剩下的应该很简单,有了一些很好的数学运算符。@Alexandredis见
do
{
    String[] entry = new String[3];

    for (int i = 0; i < 3; i++)
    {
        if (opnEsoda.hasNextLine())
        {
            // Trim removes leading or trailing whitespace.
            entry[i] = opnEsoda.nextLine().trim(); 
        }
    }

    System.out.println(entry[2]);
}
while (opnEsoda.hasNextLine)