

クラス`getTime()`で勤務日数`N`、１日の作業開始時間`st`、終業時間`et`を入力する。それらの値を次のクラス`divWage()`へ持っていって計算に使いたいが上手くいかない。クラスの理解が十分でないと考えられるので、ご教示賜りたい。

**現状のコード:**

[code]

    public int [][] getTime(){
        System.out.println("勤務日数Nを入力する 　例：5");
        Scanner sc = new Scanner(System.in);
        int N = sc.nextInt(); 
        String d = sc.nextLine();
    
        int [][] time = new int [N][2];
        for(int j = 0;j<N;j++){
            for(int k = 0;k<2;k++){
                time [j][k] = sc.nextInt();
            }
            st = time[j][0];
            et = time[j][1];
            divWage(st,et);
        }
        return time;
    }
    
    public void divWage(int s,int e){
        s = st;
        e = et;
    
    }・・・
    
[/code]


CC BY-SA 4.0
2023-06-18T13:00:05.813
95285
2023-06-19T20:39:52.343
2023-06-19T01:03:39.837
3060
58773
question
java
次のクラスへの値の渡し方


ソースコードを拝読したところ、うまくいかない原因が複数あるように見受けられます。  
もしかしたらJavaの構文全体についての知識が整理できていないのかもしれません。

下記をご確認の上、教材のテキストなどがありましたら読み返してみてください。  
質問を加筆修正して、具体的に何が分からないのかを明確にすると的確な回答を得やすくなります。

  * `getTime()`と`divWave()`はクラスではなくメソッドです。  
コンパイルエラーが発生しても良いので、`public class
Hoge`などの構文で記述されているクラスを省略せずに[再現可能な短いサンプルコード](https://ja.stackoverflow.com/help/minimal-
reproducible-example)の形式で記述してください。

  * `st = time[j][0];`や`s = st;`などで変数の型が定義されていません。  
メソッド内で初めて変数を宣言する場合は、`int st =
time[j][0];`のように変数の型を定義しないと「`st`って何それ？食べ物？」とコンパイラが混乱してしまいます。  
もしも[メンバ変数](https://www.javadrive.jp/start/member/index1.html)として`st`などを定義している場合は、質問文を編集してその情報を補完してください。

  * `divWage`メソッドの引数と戻り値は正しいですか？  
ご質問のコードでは、例えばメソッドの引数で`s`を渡していますが、即座に`s = st;`のような代入が発生し、渡された`s`がどこにも利用されていません。  
そして`public void divWage`は戻り値が存在しない`void`で定義されているので、計算後の数値を`return`できません。  
もしも`st`と`et`を受け取り、戻り値として小数を返したい場合は`public double divWage(int st, int
et)`のように定義します。


CC BY-SA 4.0
2023-06-19T01:01:47.627
95295
2023-06-19T01:01:47.627
9820
95285
answer


(直接の回答ではないですが、遠回りになりそうに見えたので)

既に付いている回答に書かれている指摘も妥当なものですが、より重要でかつ質問者がすぐできることは、

> 上手くいかない。

の内容を具体的に質問文に追記することです。

  * どういう数値を入力したのか
  * その結果、動作としてどうなることを期待していたのか
  * 実際の結果は(期待に反して)どうなったのか 
    * 何かエラーが出たのならエラーメッセージはどんなものだったか

用語の誤りや不完全なコードについては(例えば↓のように)ある程度読者が補完することが可能です。  
また質問者からすると、困難で修正するのに時間がかかる場合もあるでしょう。

一方、正しく用語が用いられ実行可能なコードが提示されていても上記の情報が無ければ回答不能なことも少なくないです。

[code]

    import java.util.Scanner;
    
    public class App {
    
        private int st;
        private int et;
    
        public int [][] getTime(){
            System.out.println("勤務日数Nを入力する 　例：5");
            Scanner sc = new Scanner(System.in);
            int N = sc.nextInt();
            String d = sc.nextLine();
    
            int [][] time = new int [N][2];
            for(int j = 0;j<N;j++){
                for(int k = 0;k<2;k++){
                    time [j][k] = sc.nextInt();
                }
                st = time[j][0];
                et = time[j][1];
                divWage(st,et);
            }
            return time;
        }
    
        public void divWage(int s,int e){
            s = st;
            e = et;
    
            System.out.printf("%d, %d\n",s,e);
        }
    
        public static void main(final String[] args) {
            new App().getTime();
        }
    }
    
[/code]


CC BY-SA 4.0
2023-06-19T20:39:52.343
95303
2023-06-19T20:39:52.343
2808
95285
answer