如何在 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 反转希腊字母?的主要内容,如果未能解决你的问题,请参考以下文章

使用java获取计算机中硬盘的真实序列号

在Java中有效地读取zip文件

Java OJ 快速读入 竞赛用

java 操作 TXT

java 怎么循环读取文件内容

java 读取大数据文件,处理大数据文件性能比较?