• 締切済み

Java メソッド、クラスの利用方法について。。

【java初心者です。。】 あるメソッドA(引数1、引数2、引数3) と入れると ○○(□□□)の設置台数は△台です。というのを一撃で表示したいのですが、少しわからなくて 今現在、このようになってまして。。。 class sss{ public static void main(String args[]){ getSlot(); } private static void slot(String name,String maker,int daisuu){ System.out.println(name+"("+maker+")の設置台数は"+daisuu+"台です"); } private static void getSlot(){ String[] sn = {"緑ドン","秘宝伝","エヴァ"}; String[] sm = {"アルゼ","大都技研","ビスティ"}; int[] sc = {10,5,12}; for(int num =0;num<3;num++){ slot(sn[num],sm[num],sc[num]); } } } 実行結果: 緑ドン(アルゼ)の設置台数は10台です 秘法伝(大都技研)の設置台数は5台です エヴァ(ビスティ)の設置台数は12台です にはなるんですが たとえばmainのところの getSlot();を getSlot(1,1,1); といれたら "緑ドン(アルゼ)の設置台数は10台です" と出るように 少しスマートに利用したいんですね。 メソッドの使い方になれたくて自分で好きなようにやってるんですが いまの感じだと、本来のメソッドの使い方と逆?のような気がして.. スロット名(メーカ名)、台数を配列にして 表示する部分までメソッドAで作って mainクラスで メソッドA(数字、数字、数字)と入力すると 配列の内容を別々に呼び出して表示する、というところまで行きたいのですが、何か良い方法はございませんか? ほんにしょうもない質問ですみません。。。 最終はA(1,1,1),A(2,2,2)・・・forを使って といれて結果まとめてでるような感じにしたいのです。 むしろ、そういう風にしない方がいいのかもしれませんが。。。 ご鞭撻お願いできませんでしょうか。

  • Java
  • 回答数2
  • ありがとう数1

みんなの回答

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.2

あえていえばこんなメソッドを作ること自体が本手じゃない. 「機種とメーカ, 台数からなるクラス」を作って, そこに「表示する」というインスタンスメソッドを作るのが本来じゃないかな.

  • sholmes
  • ベストアンサー率81% (89/109)
回答No.1

<回答> 多分、こういう風に使いたいという事なんですよね? http://ideone.com/db28q 各部の名称等は極力変え無いようにしました。 <おまけ> 外部から配列のインデックスを指定する時、何番に何があるか把握している必要がありますよね? この使い方が大変だなーと思うようであれば、ちょこちょこクラスやメソッドの配置を変えてみて、丁度良いところを探すようにしてみて下さい。 簡単なところで、台数だけでも引数で直接指定するとか、そもそも全部の値を引数で直接受け取るとかどうでしょう

Yuu0213
質問者

お礼

ありがとうございます!!!むちゃくちゃわかりやすかったです!!!!!。 本当に時間頂いてありがとうございます。 引数の型をintにしたら Stringを入れられないと思っていました String sn [int型 name1]という風にしたらよかったんですね。 とても勉強になりました。ありがとうございます。

関連するQ&A

  • 初歩的な メソッドの引数について

    参考書のサンプルなんですが、 Carクラスのメソッドの引数のところで num = n と代入しているのですが、 これを直接void setNum(int num)としたほうがらくだと思うのですがなにか意味があるのでしょうか? class Sample4{ public static void main(String args[]){ Car car1 = new Car(); car1.setNum(33); } } class Car{ int num; void setNum(int n){ num = n; System.out.println("台数" + num); } }

    • ベストアンサー
    • Java
  • Javaの初期化メソッドについて

    こんにちは。Javaの初心者です。 Javaの初期化メソッド(initメソッド)についてなのですが、処理を記述しても実行してくれません。 恐らく使い方が間違ってるかと思われるのですが、ネットで調べてもあまり検索結果がでてこなかったので、質問させてもらいました。 以下サンプルコード import java.lang.*; public class Test { static int a; public void init() { a = 10; } public static void main(String[] args) { System.out.println(a); } } 実行してみても、「0」と表示されるだけで、「10」と表示してくれませんでした。 どこかコードが間違えてるのでしょうか? それとも初期化メソッドはアプレット用であってアプレットで使わないと意味がないというものなのでしょうか? 因みに関係ないかと思われますが、グローバル変数は自動的に初期化される(0が代入される)ということは知っています。 ご教授の方、よろしくお願い致します。

    • ベストアンサー
    • Java
  • mainクラス内に書いたメソッドの宣言の仕方(staticの必要性)

    java を勉強中の超初心者です、宜しくお願いします。 main と同じクラスに disp というメソッドを作成してやり、” void disp(int a , int b )”と書いてやりましたが、mainからアクセス出来ません。 そこで、” static void disp(int a , int b )” という風に” static ” を先頭につけてやりましたら、うまく動きました。 これは、mainメソッドから他のメソッドにアクセスする場合には、必ず” static ” をつけてやる必要があるということでしょうか。 ======================================================= class クラス練習 { public static void main(String[] args) { disp(5,10); } /*static*/ void disp(int a , int b ) { System.out.println("a+b = " + (a+b)); } }

    • ベストアンサー
    • Java
  • mainメソッドと同じオブジェクト内のメソッドにはstaticを必ずつ

    mainメソッドと同じオブジェクト内のメソッドにはstaticを必ずつけなければならないのでしょうか? そのような記述を見掛けたのですが、もしこれが正しいという場合、 それは、なぜなのでしょう? java初心者ですが、どうぞ宜しくお願いいたします。 class MainClass{  //先頭のstaticに注目  static void sub(){   ~~  }  //mainメソッド  public static void main(String[] args){   sub();  } }

    • ベストアンサー
    • Java
  • 計算クラスのメソッドについて

    <問題> Mainクラス mainメソッド 1)実行時に引数を2つ付けて実行する。(数字) 2)計算クラスのオブジェクトを生成。 3)argsの0番目と1番目から値を取得し、int型に変換する。 4)int型に変換した値2つを引数として、計算クラスの足し算メソ   ッドを実行し、戻り値を取得して表示する。 計算クラス 足し算メソッド(引数=int,int) 1)int型の数字を引数として2つ受け取る。 2)二つの引数の値を足し算する。 3)計算した値を戻り値とする。 *********************************************************** 上記の問題についての質問です。 最初mathくらすのメソッドを使うのかと思ったのですが、 足し算を計算するようなメソッドが無かったのでネットで検索 して見つけたcalcAdd()というメソッドを使って記述してみました。 でも「シンボルを見つけられません」のエラーが出てコンパイル 出来ないし、メソッドの使い方も違うような気がするので、 分かる方正しい記述の仕方を教えてください。 package siryou; class Keisan { int cal; int cul; public int tashizan(int a, int u) { cal = a; cul = u; int kekka = (Integer)calcAdd(cal, cul, 0); return kekka; } } class TashiHikiKakeWari { public static void main(String args[]) { Keisan ki = new Keisan(); String str1 = args[0]; String str2 = args[1]; int res1 = Integer.parseInt(str1); int res2 = Integer.parseInt(str2); ki.tashizan(res1, res2); int kekka = ki.tashizan(res1, res2); System.out.println(kekka); } } ************************************************************ calcAdd()メソッドの呼び出し方も間違っている気がするのですが、 そもそもこのメソッドって呼び出せば自動的に計算されるように なっているのですか? それとも足し算を計算する記述は別にしなければならないのでしょうか?

    • ベストアンサー
    • Java
  • javaの問題です。

    現在以下のようにプログラムを書いてみました。 public class Replace { public static void main(String[] args) { String str = args[0]; int num = str.indexOf(args[1]); while (num != -1){ str = ( str.substring(0, num) + args[2] + str.substring(num + args[1].length()) ); num = str.indexOf(args[1]); } System.out.println(str); } } 第一引数に第二引数が含まれていれば、それを第三引数に置換する、というものです。 上記にて第二引数が単体ならば動作するのですが、たとえば 第一引数:ABCBA 第二引数:AB 第三引数:C という風に第二引数を複数にすると、 結果がCCBAと後半のBAが変換されなくなってしまいました。 後半部分もAとBが含まれる、ということで、同じように変換出来るようにしたいのですがどのようにすればよいのでしょうか?;; どうぞよろしくお願いいたします;;

    • ベストアンサー
    • Java
  • Javaでメソッドの引数にメソッド

    以下のようにメソッドの引数にメソッドを渡したいです。 static void methodA(methodB, str) { methodB(str); } static void methodB(str) { System.out.println(str); } つまりメソッドAにメソッド名「methodB」と文字列「str」を渡して、間接的にメソッドBを実行させたいということです。 getMethodやinvokeを使うのかなとは思ったのですが、よく理解できませんでした。 上記のようなことは可能でしょうか?

    • ベストアンサー
    • Java
  • クラスメソッドのみのクラスのオブジェクト生成は不可??

    あるテキストのjavaの問題です。 public class Draw{   static void pixel(int x,int y){     /*座標(x、y)に点を描画*/   }   static void line(int x1,int y1,int x2,int y2){     /*座標(x1、y1)~(x2、y2)に線を引く*/   } } で、これを実行するための以下のようなクラス public class TestDraw{ <ここに入力> } という問題なのですが2つまでは絞れたのですが、 (1) public static void main(String args[]){   Draw d = new Draw().line(10,10,20,30); } ↑× (2) public static void main(String args[]){   Draw.line(10,10,20,30); } ↑○ (2)はlineメソッドがstaticメソッドだからオブジェクト生成しなくても良い、ということなんですが (1)も正解のような気がするのですが・・・ 解説によると「lineはvoidなのでnew Draw().line(10,10,20,30);とすれば正解、とあります。 どうもいまいち理解できません。 クラスメソッドはオブジェクト生成しなくとも良い→オブジェクト生成できない ということなのでしょうか? それからちなみに、public classって2つ記述できないんではありませんでしたか?

    • ベストアンサー
    • Java
  • javaプログラム 合ってるかお願いします

    プログラムは非常に苦手なため合ってないと思いますが、合ってないのは何が正解かを教えてください。 よろしくお願いします 1 ローカル変数を全て答えよ args,num 2 インスタンス変数を全て答えよ num 3 インスタンスメソッド名を答えよ Example2 4インスタンスメソッドを呼び出している行 public class Example2{ int num; public static viod main(String[] args){ Example2 ex2 = new Example2(5); int a = ex2.getNum(); System.out.println(a); } Example2(int num){ this.num=num; } int getNum(){ return this.num; } }

    • ベストアンサー
    • Java
  • javaプログラムについて

    */コマンドライン引数で2つの数字と1つの記号を受け取ります。 * //受け取った記号が『+』ならplusメソッドを呼び出し、 * //受け取った記号が『-』ならminusメソッドを呼び出し、 * //受け取った記号が『×』ならmultiplyメソッドを呼び出し、 * //受け取った記号が『÷』ならdivideメソッドを呼び出し、 * //それ以外が入力された場合は『計算できません。』と表示する * //プログラムを作成してください。 * */ public class MethodAdd9 { public static void main(String[] args) { int input1 = Integer.parseInt(args[0]); int input2 = Integer.parseInt(args[1]); String sign = args[2]; //ここにプログラムを追加してください if(sign.equals("+")){ plus(input1,input2);//プラスメソッドへ } if(sign.equals("-")){ minus(input1,input2);//マイナスメソッドへ } if(sign.equals("*")){ multiply(input1,input2);//掛算メソッドへ } if(sign.equals("/")){ divide(input1,input2);//割算メソッドへ } } // 四則演算を行うメソッドを追加 //プラスメソッド表示 public static void plus(int a,int b){ int c=a+b; System.out.println(a+b); } //マイナスメソッド表示 public static void minus(int d,int e){ int f=d-e; System.out.println(d-e); } //掛算メソッド表示 public static void multiply(int g, int h){ int i=g*h; System.out.println(g*h); } //割算メソッド表示 public static void divide(int j,int k){ int l=j/k; System.out.println(j/k); } } ここまで出来て、記号を認識してくれるようにはなったのですが、何故か"*"掛算の記号だけ読み込んでくれません。また、ここから「計算出来ません」と表示させるにはどうすれば良いでしょうか。知恵をお貸しください。