- 締切済み
友達に問題を出されて・・・、助けてください。
JAVAのプログラムで友達から問題を出されました。 内容は、 「1.キーボードから整数を入力し、int型の変数に代入する。 2.入力された整数が0ならば、「その数は0です」と表示する。 3.入力された整数が0でなければ、「その数は0ではありません」と表示する。」 これだけならIF文の条件分岐で解決できるのですが、条件として 「 使用する演算子は、表4-1の+、-、*、/のみであること。」 が、加えられています・・・。 これだとアイデアが出てきません。 すみませんが、助言してください。
- みんなの回答 (9)
- 専門家の回答
みんなの回答
- freedom560
- ベストアンサー率46% (80/173)
int num=Integer.parseInt(args[0]); // 絶対値を取る int abs_num=Math.abs(num); // 0で割るのを防ぐため-0.5だけずらす double moved=abs_num-0.5; // 入力が0のときだけ-1.0になり、それ以外のときは+1.0になる double zero_or_not=moved/Math.abs(moved); // -1.0のとき0、+1.0のとき1が返ってくる関数 int start=(int)(0.5*zero_or_not+0.5); // -1.0のとき1、+1.0のとき7が返ってくる関数 int length=(int)(3*zero_or_not+4); String s1="すはありません"; s1=s1.substring(start,length); System.out.println("その数は0で"+s1); でした・・
- freedom560
- ベストアンサー率46% (80/173)
配列を使わずに考えてみました public static void main(String args[]) { int num=Integer.parseInt(args[0]); // 絶対値を取る int abs_num=Math.abs(num); // 0で割るのを防ぐため-0.5だけずらす double moved=abs_num-0.5; // 入力が0のときだけ-1.0になり、それ以外のときは+1.0になる double zero_or_not=moved/Math.abs(moved); // -1.0のとき1、+1.0のとき7が返ってくる関数 int length=(int)(3*zero_or_not+4); String s1="すはありません"; s1=s1.substring(num,length); System.out.println("その数は0で"+s1); } +,-,*,/を全部使ってみました。
- world99
- ベストアンサー率64% (20/31)
面白そうなんで、挑戦してみました。 こんなのは、如何でしょうか? public static void main(String[] args) { for (int i=0; i<args.length; i++) { System.out.println("入力値[" + args[i] + "]"); // 回答1 int num = Integer.parseInt(args[i]); if ((num-1) == -1) { System.out.println("その数は0です"); } else { System.out.println("その数は0ではありません"); } // 回答2 if (args[i].matches("0")) { System.out.println("その数は0です"); } else { System.out.println("その数は0ではありません"); } } }
- i2719
- ベストアンサー率35% (11/31)
ANo.5を参考にして System.out.println(msg[1 - (Integer.MIN_VALUE + input) / Integer.MIN_VALUE]);
- nakatyuu
- ベストアンサー率20% (2/10)
int input = Integer.parseInt(args[0]); int i = (int)((input / (input + 0.1)) + 0.9); String[] msg = {"その数は0です", "その数は0ではありません"}; System.out.println(msg[i]); ■解説 input / (input + 0.1)は、inputが0の場合は0、正の数の場合は1未満となる。 int型は小数以下は切捨ての為、 (input / (input + 0.1)) + 0.9で切上げし2未満にし、 最後のintへのcastで切り下げする。 これにより、0以外の場合、正の数なら1となる。 負の数には対応してない...まだまだだね。
お礼
回答ありがとうございます。 条件に配列を入れてはいけないとは言われていないので、こちらの返信を参考にさせていただきます。
- hofchan
- ベストアンサー率62% (17/27)
import java.io.*; class ho{ public static void main(String args[])throws IOException{ switch(Integer.parseInt(new BufferedReader(new InputStreamReader(System.in)).readLine())){ case 0: System.out.println("0 です"); break; default: System.out.println("違います"); break; } } } = もダメなのでしょうか?
お礼
回答ありがとうございます。 case文も使用不可でした・・・。
- beubeu
- ベストアンサー率70% (7/10)
division by zero を try-catch で取得するのは? はっきり言って綺麗なコーディングじゃありませんが。 int n; // 入力した整数 try { int n2 = 0 / n; // その数は 0 ではありませんの表示 } catch (ArithmeticException e) { // その数は 0 ですの表示 }
- japan_3
- ベストアンサー率0% (0/2)
try{ int i = 100 / (入力された数) 表示["その数は0ではありません"] }catch(エクセプション){ 表示["その数は0です"] } でどう? try/catchも使用禁止ですか?
お礼
回答ありがとうございます。 >>try/catchも使用禁止ですか? try/catchは使用禁止みたいでした・・・。
- seasoning
- ベストアンサー率25% (182/713)
比較演算子を使うなって事ですかね? 無理やりですけど。。。 int hoge; ←これにキーボードの入力を突っ込む if(Integer.toString(hoge).equals("0")){ ※0の出力 } else { ※0以外の出力 } ホント無理やり・・・わざわざIntにする必要ない・・・
お礼
回答ありがとうございます。 条件に配列を入れてはいけないとは言われていないので、こちらの返信を参考にさせていただきます。