2017-06-05 29 views
-1

我有以下內容:如何在Java中將字符串轉換爲字符和整數?

  1. 字符串包含5 *;
  2. char opr;
  3. int data;

我想在數據中的5 *存儲在OPR

任何想法,該怎麼辦呢? 我所知,如果字符串包含整數僅然後我將分裂和解析,但在這種情況下,字符串包含int和炭

輸入:

字符串輸入= 5 *;

我想輸出將是這樣的:

this.opr = *

this.data = 5

+0

這個問題*非常具體*。你應該定義你想要的完整用例。沿着'([\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\')(。*)')的正則表達式可以讓你在Matcher組中訪問數字和操作數,但是如果有其他要求, 。 – KevinO

+1

一種方法是使用'char opr = str.charAt(1);''int data = Integer.parseInt(str.substring(0,1));'。但是有些東西告訴我這可能太具體。如果您需要更通用的解決方案,則需要描述更一般的示例。 – Pshemo

+0

@Pshemo沒有特定的代碼,我試圖找出如何做到這一點,你的答案是完美的:)感謝很多「dzięki」 –

回答

1

一個簡單的方法來做到這一點(如果你不希望使用正則表達式)是做這樣的事情:

String temp =""; 
// read every char in the input String 
for(char c: input.toCharArray()){ 
    // if it's a digit 
    if(Character.isDigit(c)){ 
     temp +=c; // append it 
    } 
    else{ // at the end parse the temp String 
     data = Integer.parseInt(temp); 
     opr = c; 
     break; 
    } 
} 

//test 
System.out.println("Input: " + input 
        + "\t Data: " + data 
        + "\t Opr: " + opr); 

測試

Input: 5* Data: 5  Opr: * 
Input: 123* Data: 123 Opr: * 
0

根據可疑的假設問題的形式解析String數字後跟op,這段代碼將達到預期的結果。

public static void main(String[] args) 
{ 
    final String input = "5*"; 
    int data = -1; 
    String op = ""; 

    Pattern pat = Pattern.compile("([\\d]+)[\\s]*(.*)"); 

    Matcher m = pat.matcher(input); 
    if (m.matches() && m.groupCount() == 2) { 
     data = Integer.parseInt(m.group(1)); 
     op = m.group(2).trim(); 
    } 
    System.out.printf("%2d with op %s%n", data, op); 
} 

輸出:

5 OP *

0
String input = 5*; 
char[] splitted = input.toCharArray(); 
char opr = splitted[1]; 
int data = Character.getNumericValue(splitted[0]); 
+0

代碼只有答案在SO中。也許給你的代碼解釋? –

0

,你還可以有3級不同的輸入試試這個如下。它將打印0不正確的數據和空白不正確的操作。

String input  = "5*"; 
    //String input  = "109/"; 
    //String input  = "109b3*"; 


    int  data  = 0; 
    char opr   = ' '; 
    int  len   = input.length(); 


    if ( len > 1) { 
     String data_s = input.substring(0, len - 1); 

     try { 
       data = Integer.valueOf(data_s).intValue(); 
     } catch(Exception e) { 
     } 

       opr  = input.substring(len - 1). charAt(0); 
     if ( opr != '+' && opr != '-' && opr != '*' && opr != '/') { 
       opr  = ' '; 
     } 
    } 


    System.out.println("Input:" + input + " Data:" + data + " Opr:" + opr);