java

2016-03-25 18 views
1

içinde ASCII çıkarma gerçekleştirmek için a, veya c veya c içeren temp adlı bir char[] dizi var. Şimdi dizideki iki bitişik karakter ayrıysa, yanive temp[j+1] sırasıyla a ve b içerir, temp[j+1] içinde depolamam gerekir. java

ve bunun için

, I, a, b ve c ASCII değerinin toplamı

private static final int CHARSUM = 294; 

tanımlandığı gibidir. ve denediğim şey temp[j] ve temp[j+1] toplamını 294'dan çıkarmaktı. başka değerler a ve b olsaydı değeri c SAKLAMALIYIM

temp[j+1] = CHARSUM-(temp[j]+temp[j+1]); 

. Ama burada, sorundur:

uyumsuz türleri:

  • private static final char CHARSUM = "294";
  • temp[j+1] = (char)CHARSUM-(temp[j]+temp[j+1]);
  • : Ve ben değiştirmeyi denedim

char int olası kayıplı dönüşüm

  • temp[j+1] = Character.getNumericValue(CHARSUM-(temp[j]+temp[j+1]));
  • Ancak, bunların hiçbiri işe yaramadı ve sorunu çözmeme yardımcı olacak başka bir yanıt bulamadım. Yani bunu düzeltmek için herhangi bir yardım çok takdir edilecektir. Teşekkürler.

    cevap

    4

    Bir char çıkarma sonucunu çevirebilirsiniz:

    Java'da
    temp[j+1] = (char)(CHARSUM-(temp[j]+temp[j+1])); 
    
    +0

    Teşekkürler! çok . :-) – OBX

    1

    , bir char olan "gerçekten" 0 ve 65535 arasında bir tam sayı. Bu aralığın dışındaki bir int değerini char değişkenine atamak isterseniz, açık bir yayınlama gerekir. Örneğin

    senin değerler için
    char c = 65535;  // ok 
    char c = 65536;  // doesn't compile 
    char c = (char) 65536; // compiles, but it's a lossy conversion 
    

    rağmen İçin

    , CHARSUM-(temp[j]+temp[j+1])bu aralıktaki her zaman olduğunu derleyici bir derleme zamanı sabiti değil çünkü söyleyemem. Bu nedenle tüm ifade bir döküm uygulamak gerekir:

    temp[j+1] = (char) (CHARSUM-(temp[j]+temp[j+1])); 
    

    Kişisel yaklaşımlar işe yaramadı nedenlerle açıklayacağım:

    • "294" bir String değil, bir int olduğunu.
    • Döküm CHARSUM için geçerlidir - tüm ifade hala bir int'dir.
    • getNumericValue, bir char numaralı int değerini döndürür, bu nedenle yayınlamanız gerekir.
    +1

    çalıştı Daha fazla bilgi için yardım ettiğiniz için teşekkürler :-) – OBX