2017-06-05 28 views
-1

私は次のものを持っています:Javaで文字列を文字と整数に変換する方法は?

  1. 文字列が5 *を含みます。
  2. char opr;
  3. int data;

私はOPR

にどのようにそれを行うための任意のアイデアをデータで5および*を保存したいと思いますか? 文字列は、私は分割し、パース、それが、この場合、文字列がintと文字が含まれています唯一の整数が含まれている場合、私が知っているよう

入力:

文字列の入力= 5 *;

私は、出力は次のようになりたい:問題はの形でStringを解析していること怪しげな仮定の下で

this.opr = *

this.data = 5

+0

この質問は*非常に具体的です*。おそらく、あなたが望むものの完全なユースケースを定義するべきです。 '([\\ d] +)(。*)'の行に沿った正規表現を使うと、数字とオペランドを '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

numberに続けて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); 
} 

出力:OPと

5 *

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); 
関連する問題