• 締切済み

友達に問題を出されて・・・、助けてください。

JAVAのプログラムで友達から問題を出されました。 内容は、 「1.キーボードから整数を入力し、int型の変数に代入する。 2.入力された整数が0ならば、「その数は0です」と表示する。 3.入力された整数が0でなければ、「その数は0ではありません」と表示する。」 これだけならIF文の条件分岐で解決できるのですが、条件として 「 使用する演算子は、表4-1の+、-、*、/のみであること。」 が、加えられています・・・。 これだとアイデアが出てきません。 すみませんが、助言してください。

みんなの回答

回答No.9

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); でした・・

回答No.8

配列を使わずに考えてみました 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)
回答No.7

面白そうなんで、挑戦してみました。 こんなのは、如何でしょうか? 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)
回答No.6

ANo.5を参考にして System.out.println(msg[1 - (Integer.MIN_VALUE + input) / Integer.MIN_VALUE]);

kenmi3499
質問者

お礼

回答ありがとうございます。 条件に配列を入れてはいけないとは言われていないので、こちらの返信を参考にさせていただきます。

  • nakatyuu
  • ベストアンサー率20% (2/10)
回答No.5

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となる。 負の数には対応してない...まだまだだね。

kenmi3499
質問者

お礼

回答ありがとうございます。 条件に配列を入れてはいけないとは言われていないので、こちらの返信を参考にさせていただきます。

  • hofchan
  • ベストアンサー率62% (17/27)
回答No.4

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; } } } = もダメなのでしょうか?

kenmi3499
質問者

お礼

回答ありがとうございます。 case文も使用不可でした・・・。

  • beubeu
  • ベストアンサー率70% (7/10)
回答No.3

division by zero を try-catch で取得するのは? はっきり言って綺麗なコーディングじゃありませんが。 int n; // 入力した整数 try {  int n2 = 0 / n;  // その数は 0 ではありませんの表示 } catch (ArithmeticException e) {  // その数は 0 ですの表示 }

  • japan_3
  • ベストアンサー率0% (0/2)
回答No.2

try{ int i = 100 / (入力された数) 表示["その数は0ではありません"] }catch(エクセプション){ 表示["その数は0です"] } でどう? try/catchも使用禁止ですか?

kenmi3499
質問者

お礼

回答ありがとうございます。 >>try/catchも使用禁止ですか? try/catchは使用禁止みたいでした・・・。

  • seasoning
  • ベストアンサー率25% (182/713)
回答No.1

比較演算子を使うなって事ですかね? 無理やりですけど。。。 int hoge; ←これにキーボードの入力を突っ込む if(Integer.toString(hoge).equals("0")){  ※0の出力 } else {  ※0以外の出力 } ホント無理やり・・・わざわざIntにする必要ない・・・

関連するQ&A