はじめまして、どうしても分からないので質問をさせて頂きたいのですが、for文又はwhile文でargsを使って1+2-3*4/5とゆう繰返しをしたいのですが、ご存知でしたら教えてください。宜しくお願い致します。
↑のようなコメントをいただきました。1+2,1+2-3,(1+2-3)*4,(1+2-3)*4,(1+2-3)*4/5と順に計算されればいいのでしょうか?
そうだとして、いろいろ考えたのですがこんな感じになりました。(※全然違ったらごめんなさい。)
- ソース1
- public class Mytest1 {これで1+2,1+2-3,(1+2-3)*4,(1+2-3)*4,(1+2-3)*4/5と順に計算されると思います。
public static void main(String[] args) {
int x= 1;
for(int i=1; i<=5; i++) {
if(i==1) {
System.out.println(x);
} else if(i==2) {
System.out.println( x+(x+1) );
} else if(i==3) {
System.out.println( x+(x+1)-(x+2) );
} else if(i==4) {
System.out.println( (x+(x+1)-(x+2))*(x+3) );
} else if(i==5) {
System.out.println( (x+(x+1)-(x+2))*(x+3)/(x+4) );
}
}
}
}
ちなみに、変数xに2を代入すれば、2,2+3.2+3-4,(2+3-4)*5,(2+3-4)*5/6と順に計算されるはずです。
- ソース2
- public class Mytest1b {ソース1を応用してみました。
public static void main(String[] args) {
String str1 = args[0];
int x = Integer.parseInt(str1);
float b1 = x;
for(int i =1; i<=5; i++) {
if(i==1) {
System.out.println(x);
} else if(i==2) {
System.out.println( x+(x+1) );
} else if(i==3) {
System.out.println( x+(x+1)-(x+2) );
} else if(i==4) {
System.out.println( (x+(x+1)-(x+2))*(x+3) );
} else if(i==5) {
System.out.println( (b1+(b1+1)-(b1+2))*(b1+3)/(b1+4) );
}
}
}
}
実行時にコマンドプロントからmainメソッドに引数で値を渡します。
「java Mytest1b 1」で実行すれば
1,1+2,1+2-3,(1+2-3)*4,(1+2-3)*4/5
「java Mytest1b 2」で実行すれば
2,2+3.2+3-4,(2+3-4)*5,(2+3-4)*5/6
と順に計算されます。
「Integer.parseInt(str1)」は、引数で受け取った値を文字列からint型に変換しています。
詳細→テキストを数字に、数字をテキストに変換する
「float b1 = x」は割るときに整数じゃなくなることがあるので型キャストで型変換をしています。
- とまあこんな感じになったのですが・・・。
あってるかな?
それどころか、質問内容と全然違ってたりして・・・
この記事を読んでる人で、こうした方がいいよってのがあれば教えてください!!