如何在 Java 中使用 BufferedReader 反转希腊字母?
Posted
技术标签:
【中文标题】如何在 Java 中使用 BufferedReader 反转希腊字母?【英文标题】:How to reverse Greek letters with BufferedReader in Java? 【发布时间】:2014-11-15 18:39:04 【问题描述】:我是 Java 新手,我有这个反向代码。我的问题是如何使用 BufferedReader 以便在我写希腊字母(如 ξηφαιπασς)时它也会返回反向的希腊字母。目前我得到的只是一些正方形。第一次在这里写问题,如有错误请见谅。
导入 java.io.*; // 用于 I/O ///////////////////////////////////////// ////////////// 类 StackX 私有 int maxSize; 私有字符 [] 堆栈数组; 私有 int 顶部; //------------------------------------------------ ------------- public StackX(int max) // 构造函数 最大尺寸 = 最大; stackArray = new char[maxSize]; 顶部 = -1; //------------------------------------------------ -------------
public char pop() // take item from top of stack return stackArray[top--]; //-------------------------------------------------------------> public boolean isEmpty() // true if stack is empty return (top == -1); //------------------------------------------------------------- // end class StackX //////////////////////////////////////////////////////////////// class Reverser private String input; // input string private String output; // output string > public Reverser(String in) // constructor input = in; //-------------------------------------------------------------> public String doRev() // reverse the string int stackSize = input.length(); // get max stack size StackX theStack = new StackX(stackSize); // make stack for(int j=0; j<input.length(); j++) char ch = input.charAt(j); // get a char from input theStack.push(ch); // push it output = ""; while( !theStack.isEmpty() ) char ch = theStack.pop(); // pop a char, output = output + ch; // append to output return output; // end doRev() //-------------------------------------------------------------> // end class Reverser //////////////////////////////////////////////////////////////// class ReverseApp public static void main(String[] args) throws IOException String input, output; while(true) System.out.print("Enter a string: "); System.out.flush(); input = getString(); // read a string from kbd if( input.equals("") ) // quit if [Enter] break; // make a Reverser Reverser theReverser = new Reverser(input); output = theReverser.doRev(); // use it System.out.println("Reversed: " + output); // end while // end main() //------------------------------------------------------------- public static String getString() throws IOException BufferedReader br = new BufferedReader(new InputStreamReader(System.in, "UTF8" )); String s = br.readLine(); return s; //------------------------------------------------------------- // end class ReverseApp
【问题讨论】:
很抱歉,您所说的“颠倒的希腊字母”是什么意思?你想反转一个字符串吗? 反转包含希腊字母的字符串。已经知道了thx:) 【参考方案1】:将 UTF8 更改为 ISO-8859-7
改变
BufferedReader br = new BufferedReader(new InputStreamReader(System.in, "UTF8" ));
到
BufferedReader br = new BufferedReader(new InputStreamReader(System.in, "ISO-8859-7"));
希望对你有帮助
【讨论】:
非常感谢! Ευχαριστω!!【参考方案2】:如果我收到您的问题,您基本上是在尝试反转字符串并且您正面临 unicode 字符的问题。为什么不使用 StringBuilder 类的 reverse() 方法进行反转 -
String result=new StringBuilder("ξηφαιπασς").reverse().toString();
【讨论】:
【参考方案3】:您可以使用库来检查输入文本的编码:http://code.google.com/p/juniversalchardet/
【讨论】:
以上是关于如何在 Java 中使用 BufferedReader 反转希腊字母?的主要内容,如果未能解决你的问题,请参考以下文章