2015-11-03 62 views
0

我想創建一個程序來打印一個隨機的阿拉伯字符。然後用戶輸入程序驗證的羅馬字形式。該程序重複此過程。如何以原始形式打印非拉丁文字符?

而不是打印出原來的字符,我的程序打印出來。你能找出問題嗎?

import java.lang.Math; 
import java.util.Scanner; 

class Arabic_Randomizer{ 
    public static void main(String[] args){ 

//the variables for 
// char [] EngLetterEqv = {'a','b','g','d','h','w','z','h','t','y','k','l','m','n','s','','','','','','','','','',''}; 
    char [] achar = {'غ' , 'ظ' , 'ض' , 'ذ' , 'خ' , 'ث' , 'ت' , 'ش' , 'ر' , 'ق' , 'ص' , 'ف' , 'ع' , 'س' , 'ن' , 'م' , 'ل' , 'ك' , 'ي' , 'ط' , 'ح' , 'ز' , 'و' , 'ه' , 'د' , 'ج' , 'ب' , 'ا' }; 
    String [] ason = { "alif" , "baa" , "jim" , "dal" , "ha(2)", "wow" , "zai" , "ha(1)" , "ta" , "ya" , "kaf" , "lam" , "miim" , "noon" , "sin" , "'ayn" , "faa" , "sad" , "qaf" , "raa" , "scin" , "taa" , "tha" , "kai" , "dhal" , "Dad" , "za", "ghayn"}; 
    int randr = 0; 
    int oi = 1; 
    String ans = null; 
    Scanner scan = new Scanner(System.in); 

// The "Game Loop" 
    while (oi != 0){ 
     //Randomizer 
     randr = (int) Math.random()*27; 
     if (randr == 28){randr--;} 
     //Selector & output 
     System.out.println("What letter is this "+ achar[randr]); 
     ans = scan.nextLine(); 
     //Check 
     if (ans.equals(ason[randr])){System.out.println("Correnct");} 
     else{System.out.println("Wrong");} 
     // 
     System.out.println("Please press 0 then enter if you would like to stop, press any other integer if you would like to continue; "); 
     oi = scan.nextInt(); 
    } 
    } 
} 

我在DrJava編碼;這可能是問題嗎?我對Java和編程一般都很陌生,所以請使用簡單的響應。

+1

我不知道DrJava有擴展字符集有很好的支持,如果在所有。您可能需要使用Eclipse等功能更強大的工具,並將控制檯和源的編碼設置爲UTF-8。 – msandiford

+0

修復了語法錯誤和解釋流程。 – Prune

+0

我不知道DrJava是什麼,但是如果你可以指定VM參數,可以試試'-Dfile.encoding = UTF-8',看看是否有幫助。 –

回答

0

只要把scan.nextLine();低於oi=scan.nextInt();,應該沒問題。