2017-09-21 72 views
2

(我在Java編程新)如何將Java中的char轉換爲int?

我有,例如:

char x = '9'; 

,我需要得到的撇號的數量,數字9本身。 我試圖做到以下幾點,

char x = 9; 
int y = (int)(x); 

但它沒有工作。

那麼我該怎麼做才能得到撇號中的數字?

回答

13

碰巧,字符'9'的ascii/unicode值比'0'(對於其他數字類似)的值大9。

所以你可以使用減法得到一個十進制數字字符的整數值。

char x = '9'; 
int y = x - '0'; // gives 9 
+1

@HaimLvov:詳細說明...看看網上的ASCII表。任何'char'都有該表中等價十進制值的數值。所以你可以減去其他任何一個來得到一個數字結果。自然,恰巧發生的是,字符0到9是爲了使數學運作。 – David

+0

更多關於https://stackoverflow.com/questions/3195028/please-explain-what-this-code-is-doing-somechar-48 – Andrew

0

你可以這樣說:

int myInt = Integer.parseInt("1234"); 
+2

這是爲字符串,而不是字符。 – Gendarme

3

我你有char '9',它將存儲它的ASCII碼,所以得到的int值,你有2種方式

char x = '9'; 
int y = Character.getNumericValue(x); //use a existing function 
System.out.println(y + " " + (y + 1)); // 9 10 

char x = '9'; 
int y = x - '0';      // substract '0' code to get the difference 
System.out.println(y + " " + (y + 1)); // 9 10 

它其實這個作品也:

char x = 9; 
System.out.println(">" + x + "<");  //> < prints a horizontal tab 
int y = (int) x; 
System.out.println(y + " " + (y + 1)); //9 10 

您存儲9碼,這相當於一個horizontal tab(你可以看到,當打印爲String,BU你也可以用它作爲int當你看到以上

0

如果你想獲得一個字符的ASCII值,或者只是把它轉換成一個int,你需要從一個char轉換爲一個int。

什麼是鑄造?投射就是當我們明確地將一個原始數據類型或一個類轉換爲另一個時。這是一個簡單的例子。

public class char_to_int 
{ 
    public static void main(String args[]) 
    { 
     char myChar = 'a'; 
     int i = (int) myChar; // cast from a char to an int 
     System.out.println ("ASCII value - " + i); 
    } 

在這個例子中,我們有一個字符( 'a')中,我們把它轉換爲一個整數。打印出這個整數會給我們'a'的ASCII值。

6

您可以使用Character類中的靜態方法從char中獲取Numeric值。

char x = '9'; 

if (Character.isDigit(x)) { // Determines if the specified character is a digit. 
    int y = Character.getNumericValue(x); //Returns the int value that the 
              //specified Unicode character represents. 
    System.out.println(y); 
}