【问题标题】:How to reverse Greek letters with BufferedReader in Java?如何在 Java 中使用 BufferedReader 反转希腊字母?
【发布时间】: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:)

标签: java letter


【解决方案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/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-11-05
      • 1970-01-01
      • 2017-03-09
      • 2021-07-16
      • 2021-07-02
      • 1970-01-01
      • 2013-02-02
      相关资源
      最近更新 更多