【问题标题】:Wrong Number of Characters (String Munipulation from File) -- Java字符数错误(文件中的字符串处理)- Java
【发布时间】:2017-08-06 13:32:09
【问题描述】:

我目前正在测试一个程序,其目的是导入文件并使用字符串操作查找该文件中的字符数。

我目前正在使用System.out.println(fileone.length()); 这样做。但是,每次我尝试运行程序时,它都会读取错误的字符数,实际上它每次都给出相同的错误数字。下面是程序的输出。

我的名字是山姆·泰勒 54

如你所见,文件中的文字显示出来了,旁边是明显错误的字符数,我自己数了一下,应该是19,包括空格。

这是读取文件并给出字符编号的代码。

你能看出什么问题吗?

非常感谢任何帮助。

Scanner ourScanner = new Scanner(new File(fileone));
System.out.println();

while(ourScanner.hasNextLine()) 
{
    System.out.print (ourScanner.nextLine() + "\t");
    count++;
    if (count%4 == 0)
        System.out.println();               
    }
}           
//System.out.println ("\n\n" + count + " \ntotal strings found.");
System.out.println(fileone.length());

【问题讨论】:

  • fileone 是您文件的字符串名称吗?如果是这样,您将打印出文件名中的字符数。

标签: java string java.util.scanner java-io


【解决方案1】:

您正在检查代表文件路径 (fileone) 的 String 的长度,而不是扫描的实际文件,因此在给定上下文的情况下它将是不变的。

如果您要计算行数,只需打印您的 count 变量。

您还有多种方法可以从 File 对象中检查文件 length 或特定字符长度(因为文件系统可能分配的空间比文件实际使用的空间多),您可以计算它们通过FileReader等迭代。

【讨论】:

  • 为帮助喝彩,让我更多地探索 FileReader,现在更有意义了!
【解决方案2】:

fileone.length() 为您提供文件路径的长度。 但是new File(fileone).length() 会给你文件大小的字节数(假设一个字符是一个字节)

【讨论】:

  • 谢谢,FileReader 有意义,并且可以工作,但是这一行可以帮助我避免过多地更改代码!
  • 只是为了确认...我正试图阻止程序计算空格...目前我正在使用 System.out.println(new File(fileName).replace(" “, ““)。长度()); ---- 看来更换有问题。有任何想法吗?它告诉我“方法 replace (String,String) 未定义 File 类型。
  • replace 用于字符串。不适用于文件对象。您必须将文件的内容作为字符串读取,然后对其应用替换
【解决方案3】:

试试这个例子:

1:读取文件的所有行

2:转换为字符串

3:删除空格

4:显示结果字符串的字节长度

package test;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;

public class test {

    public static void main(String[] args) throws IOException {
        // TODO Auto-generated method stub

        File file = new File("C:\\Users\\xxx\\test.txt");

        BufferedReader br = new BufferedReader(new FileReader(file));
        StringBuffer fileContents = new StringBuffer();
        String line = br.readLine();
        while (line != null) {
            fileContents.append(line);
            line = br.readLine();
        }

        String sValue = fileContents.toString();

        //remove all whitespace
        sValue = sValue.replaceAll("\\s+","");

        System.out.println(sValue.length());
    }
}

测试:

test.txt 内容:My name is Sam Tyler 54 --> 18 个字符

结果: 18

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-05-04
    • 1970-01-01
    • 2013-12-19
    • 2013-08-05
    • 2011-08-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多