※ ChatGPTを利用し、要約された質問です(原文:【Java】複数の引数の数値と文字列の判定)
このQ&Aのポイント
Javaのプログラムで、複数の引数が渡された場合に、それぞれの引数が数値か文字列かを判定する方法について教えてください。
引数が数値の場合は、数値×文字数を出力し、文字列の場合は逆から1文字ずつ出力するようにしたいです。
現在のソースコードでは、1つの引数では正常に動作しますが、複数の引数がある場合に正しく表示されません。どう修正すればよいでしょうか?
Javaについてです。
コマンドライン引数を複数渡し、渡ってきた値が数字のみの場合は、数値*数値の文字数を出力し
数字のみでない場合は文字列を逆から1文字ずつ出力する。
数値の判定はtry/catchで行い、catchメソッドには「stringFlg = true;」のみにする。
というプログラムを作りたいのですが、
引数が1つの時は上手くいくのですが、11 2あ あ3 44を渡した場合、
22
あ
2
3
あ
88
と出るはずが、
22
1
1
あ
2
3
あ
4
4
と出てしまいます…。
どうしたら全ての引数を正しく表示出来るのでしょうか?教えて下さい。
現時点のソースコードです。
public class Test {
public static void main(String[] args) {
boolean stringFlg = false;
try {
if(StringUtils.isNumeric(args[0])){
for(String arg : args) {
int num = Integer.parseInt(arg);
System.out.println(num * arg.length());
}
}
else{
stringFlg = true;
}
} catch (NumberFormatException e) {
stringFlg = true;
}
if(stringFlg){
for(String val : args) {
String[] str = val.split("");
for(int i = str.length-1; i >= 0; i--){
System.out.println(str[i]);
}
}
}
}
}
お礼
いつも回答して頂き、ありがとうございます! とても助かっています。 今回はどうしてもフラグを使いたかったので、 教えて頂いたものを元に、こんな感じになりました。 public class Test { public static void main(String[] args) { boolean stringFlg = false; for (String arg : args) { try { int num = Integer.parseInt(arg); System.out.println(num * arg.length()); stringFlg = false; } catch (NumberFormatException e) { stringFlg = true; }if(stringFlg){ char[] chars = arg.toCharArray(); for (int i = chars.length - 1; i >= 0; i--){ System.out.println(chars[i]); } } } } }