我必须创建名为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;
}
}
}
答案 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;
}