2012-03-30 42 views
2

nominatorと分母を文字列から2つのint型変数に取り出す必要があります。それは次のようになります。 "1/-2"、 "4/0"、 "-2/1234"、または "5"(この場合、分母が1です)。Javaの文字列から整数を解析するにはどうすればよいですか?

整数と「/」の間のスペース、整数の内部スペースなしがあるかもしれません。 文字列には整数が1つしかなく、 "/"はありません。

アイデア?ありがとう。

こんにちは、私はあなたの男の回答を合わせ、それが動作します!ありがとう!

Sがストリング

s = s.trim();

String[] tokens = s.split("[ /]+");

int inputNumerator = Integer.parseInt(tokens[0]);

int inputDenominator = 1;

if (tokens.length != 1)

であります

答えて

6
String[] parts = s.split(" */ *"); 
int num = Integer.parseInt(parts[0]), 
    den = Integer.parseInt(parts[1]); 
+0

基本的に私の提案を実装しています。 's.split(" */* ");とは分かりませんが、一度にやりたいのなら、正規表現を試してみてください。 –

+0

Hm?私の正規表現が間違っていると言っていますか? –

+2

私はこれがワイルドカードの使用によってバグかもしれないと言っていて、OPが望んでいるものとまったく同じではありません。コードが何を正確に行い、どこで問題が発生する可能性があるかについて言及することが最善です。 –

3

、すべてのスペースを削除し、区切り文字として「/」を使用して文字列を区切ります。 うまくスペースを削除するには、その使用Integer.parseInt();
した後、あなたが試すことができ、第一列と第二列の第一文字の最後をチェックし、「」、試合はそれらを削除する場合は、それらを比較します。

+0

に役立ちます。これには理由がありますか? – Korinna

+0

トリム機能は基本的にリード/トレイルを含まないループであり、必ずしも適切ではない場合があります。それは一般的に遅く、特に長い文字列があるときは遅いです。私は1番目に - と2番目に - を使用することをお勧めします。 –

+0

しかし、その方法はOPによって選択されるべきであるという理由がある。私が分割(正規表現)を提案した主な理由は、実際にはこのケースで最も効果的な方法だからです。 –

0

希望これは、あなたが先頭と末尾のスペースを取り除くために、文字列のトリム()関数を使用することをお勧めしていないので、私は、少し困惑している..

StringTokenizer st= new StringTokenizer(s, "/"); 
int inputDenominator,inputNumerator; 

if(st.hasMoreTokens()) 
{ 
String string1= st.nextToken(); 
string1=string1.trim(); 
inputNumerator = Integer.parseInt(string1); 
} 

if(st.hasMoreTokens()) 
{ 
String string2= st.nextToken(); 
string2=string2.trim(); 
inputDenominator = Integer.parseInt(string2); 
} 
else{ 
inputDenominator=1; 
} 
関連する問題