2017-07-18 30 views
0
String str="2x+5=15"; 
    //here how to find x 
    String res[]=str.split([+=]); 
    int x=Integer.parseInt(res[0].charAt(0)); 
    int y=Integer.parseInt(res[1]); 
    int z=Integer.parseInt(res[2]); 
    int res=(z-y)/x; 
    System.out.println(res[0].charAt(1)+" is "+res); 

これらの線形方程式を解く方法はありますか?私は...初心者だと、この方法はそれほど悪く見えます。..javaの線形方程式

+0

ええ、それは悪く見えます。この種のことについては、Javaで数学パッケージを使ってみてください。たとえば、JavaからRを呼び出すことができます。 –

+0

私はあなたがこの大きなプログラムではなく、もっと小さなプロジェクトを楽しいものとして開発していると仮定しています。あなたのメソッドはこの特定の方程式に対してうまく動作しますが、ほとんどの入力では失敗します。方程式にマイナス記号があればどうなりますか? 'x 'の前の要素が複数の文字で書かれているとどうなるでしょうか?これらの問題を修正するために、正規表現に 'x'と' -'を検出するように修正することができます。また、 'str'が適切にフォーマットされていないとどうなりますか?たとえば、いくつかの "="記号が存在する可能性があります。これはJavaの例外処理について学ぶよい機会です。 – francoisr

+0

ああ!私はティム – user634656

答えて

0

あなたがstring通過するforループを使用して、その特別なchar(+, -, *)ようとするたびに取得する場合、各charをチェックするような何かをやって試すことができますあなたがそのようなcharに最後に当たったときの文字列を受け取り、それをintに解析して、計算します。あなたはいくつかのことについて注意する必要がありますが、あなたはより多くの問題に遭遇するかどうか常に尋ねることができます。 幸運

0

パターンマッチングはあなたを助ける:

String str = "-50000x -50000 = -150000"; //ax+b=c 
Pattern p = Pattern.compile("^(-?\\d+)\\s?(x)\\s?\\+?\\s?(-?\\d+)\\s?=\\s?(-?\\d+)$"); 
Matcher m = p.matcher(str); 
double a = 0, b = 0, c = 0; 

if (m.find()) { 
    a = Double.valueOf(m.group(1)); 
    b = Double.valueOf(m.group(3)); 
    c = Double.valueOf(m.group(4)); 

    double res = (c - b)/a; 
    System.out.println(m.group(2) + " is " + res); //x is 2.0 
} 

パターン:

  • \sはスペースのためである|| \dはあなたがminus
  • あなたは各要素の前または後にスペースを持つことができます(オペレータ/番号)か
  • それを持つことができ桁
  • 数X +/-数=数
  • のためになるありますまた、「X」または「Y」に関係なく同様の手紙、
  • も良く除算にdoubleではなく、intを使用するを見つける

詳細な説明は、標準で提供されていますグーグルで「javaの8パターン」をINGの//とあなたは私がここに完璧にマッチの

例作られたパターンのすべての要素についての説明を持ってそこにウェブサイト上:Regex101 demo

0
ここ
import java.util.*; 
class stack 
{ 
    public static void main(String[] args) 
    { 
    String str="2x+5=15";    //here how to find x 
    StringTokenizer st=new StringTokenizer(str,"+="); 
    String aa=st.nextToken(); 
    int x= Character.getNumericValue(aa.charAt(0)); //char to int conversion. 
    int y=Integer.parseInt(st.nextToken()); 
    int z=Integer.parseInt(st.nextToken()); 

    int res=(z-y)/x; 
    System.out.println(res); 
     } 
    } 

はのためのソリューションですあなたの問題。

関連する問題