创建一个将大写更改为小写,小写更改为大写的类,并反转每个单词

时间:2015-11-12 19:05:06

标签: java stream

我必须创建名为StringLineWriter的类。 该类应该将大写更改为小写,小写更改为大写,并且它会反转每个单词 (例如输入:1月,输出:YRAUNAj)。

以下是我已经完成的两个类,我需要帮助创建StringLineWriter类。

package Task5;

import java.io.*;
import java.text.DateFormatSymbols;

public class Assignment5 {

    final static String filename = "output.txt";

    public static void main(String[] args) {
        try {
            FileWriter fileWriter = new FileWriter(filename);
            BufferedWriter bufferedWriter = new BufferedWriter(fileWriter);

            StringWriter stringWriter = new StringLineWriter(bufferedWriter);
            for (String month : Assignment5Validator.getMonths()) {
                stringWriter.write(month);
            }
            bufferedWriter.close();

            FileReader fileReader = new FileReader(filename);
            BufferedReader bufferedReader = new BufferedReader(fileReader);
            if (Assignment5Validator.validate(bufferedReader)) {
                System.out.println("Solution VALID! :)");
            } else {
                System.out.println("Solution INVALID!");
            }
            bufferedReader.close();
        } catch (IOException ex) {
            System.out.println(ex);
        }
    }

}







/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package Task5;

import java.io.BufferedReader;
import java.io.IOException;
import java.text.DateFormatSymbols;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author Tony
 */
public class Assignment5Validator {
    final private static String[] months = {"January", "February", "March", "April", "May", "June", "July",
                                            "August", "September", "October", "November", "December"};
    final private static String[] monthsInversed = {
        "YRAUNAj", "YRAURBEf", "HCRAm", "LIRPa", "YAm", "ENUj", "YLUj", 
        "TSUGUa", "REBMETPEs", "REBOTCo", "REBMEVOn", "REBMECEd"
    };
    public static String[] getMonths() {
        return months;
    }

    static public boolean validate(BufferedReader reader) {
        String line;
        int i = 0;
        try {
            while (true) {
                line = reader.readLine();
                if (line == null || !line.equals(monthsInversed[i++])) {
                    return false;
                }
                if (i == months.length) {
                    return true;
                }
            }
        } catch (IOException ex) {
            System.out.println("Error while reading the file");
            return false;
        }
    }
}

2 个答案:

答案 0 :(得分:0)

这可能有所帮助:

private String reverse(String original) {
    String reversed = "";
    for (int letter = original.length() - 1; letter >= 0; letter--) {
        reversed = reversed + original.charAt(letter);
    }
    return reversed;
}

此外,对于大写字母到小写字母,只需在每个字母上使用Character.isUpperCase(char),然后相应地使用toLowerCase()toUpperCase()

答案 1 :(得分:0)

以JPeterson462的答案为基础,您可以通过以下方式一次性完成所有操作

private String reverseAndChangeCase(String original) {
  String reversed = "";
  for (int letter = original.length() - 1; letter >= 0; letter--) {
      char currentLetter = original.charAt(letter);
      if (Character.isUpperCase(currentLetter)) {
          currentLetter = Character.toLowerCase(currentLetter);
      } else {
          currentLetter = Character.toUpperCase(currentLetter);
      }
      reversed = reversed + currentLetter;
  }
  return reversed;
}