【问题标题】:Java code to copy all the text while converting upper case letters from one text file to lower case letters in another text fileJava 代码复制所有文本,同时将一个文本文件中的大写字母转换为另一个文本文件中的小写字母
【发布时间】:2017-06-22 04:56:29
【问题描述】:

我编写的将一个文件中的大写字母转换为另一个文件中的小写字母的代码有问题。当为一些名为 inputtext.txt 的文本文件运行代码时,它会创建输出文件,但不会转换大写文本。

import java.io.*;

public class TextFile {
    public static void main (String[] args) throws IOException {
    // Assume default encoding.
         // The name of the file to open for reading.
            File filein = new File("inputtext.txt");
         // The name of the file to open for writing.
            File fileout = new File("outputtext.txt"); 
            char CharCounter = 0;       
            BufferedReader in = (new BufferedReader(new FileReader(filein)));
            PrintWriter out = (new PrintWriter(new FileWriter(fileout)));

            int z;
            while ((z = in.read()) != -1){

                if (Character.isUpperCase(z)){
                    Character.toLowerCase(z);

                }
                out.write(z);


            }
            // Always close files.
            in.close();
            out.close();
        }       
    }

【问题讨论】:

  • Character.toLowerCase(int) 实际上也 returns 一些东西,这不是我们在这里谈论的 C/C++,你会期望方法更改原始类型的值
  • 逐行读取并在您的行上调用 String.toLowerCase,然后再将其写入输出文件。
  • 请详细说明,因为我对 java 和这样的编程很陌生@ShayHAned

标签: java


【解决方案1】:

您可以逐行读取,然后在写入时转换为小写。

    BufferedReader br = new BufferedReader(new FileReader(new File("a")));
    PrintWriter pw = new PrintWriter(new FileWriter(new File("b")));
    String line = null;
    while((line = br.readLine()) != null){
        pw.write(line.toLowerCase());
    }
    pw.close();
    br.close();

【讨论】:

  • 感谢您的回答,但您能否向我指出我编写的代码存在的问题。谢谢
  • Character.toLowerCase() 实际上会返回小写的值。您没有存储/使用该值。而是将变量 z 写入输出文件,无论如何都可以。
  • 如果你想自己写代码z= Character.toLowerCase(z);
【解决方案2】:

您的代码很好。问题是 Character.toLowerCase(z) 不转换 z 的值,而是返回一个新值,它是变量 z

int theLowerCaseOfZ = Character.toLowerCase(z);

你可以很容易地解决你的问题

int z;
            while ((z = in.read()) != -1){

                if (Character.isUpperCase(z)){ 
                    // SMOKING GUN!!!
                    out.write( (int) Character.toLowerCase(z) );

                }

            }
            // Always close files.
            in.close();
            out.close()

你也可以这样做

int theLowerCaseOfZ = (int) Character.toLowerCase(z);
out.write(theLowerCaseOfZ);

全心全意 RANA SAHIB :) ,Rachit 的回答也很有用,如果需要,我愿意进一步澄清

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-02-21
    • 1970-01-01
    • 2013-01-30
    • 2015-04-24
    • 1970-01-01
    • 2013-11-02
    • 2014-12-23
    • 2021-12-29
    相关资源
    最近更新 更多