第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

傳遞給調(diào)用方法的命令行參數(shù)

傳遞給調(diào)用方法的命令行參數(shù)

慕姐4208626 2022-08-03 10:22:15
如何將字符串的命令行參數(shù)傳遞給 java main 方法,該方法將調(diào)用另一個(gè)類中的特定方法?我需要能夠傳遞'java Statdriver均值'將調(diào)用均值方法,或者'java Statdriver std'將調(diào)用標(biāo)準(zhǔn)差方法,或者不傳遞任何參數(shù)將導(dǎo)致通過終端調(diào)用均值方法。按照我的方式去做似乎行不通。我相信我的問題在于if,else if,else循環(huán)。這是我的代碼:public class StatDriver{   public static void main(String[] args)   {      Scanner input = new Scanner(System.in);      double total;      double mean;      double standardDeviation;      double average;      total = 0;      args[0] = "mean";      args[1] = "std";      ArrayList<Double> data = new ArrayList<Double>();      while(input.hasNextDouble())      {         data.add(input.nextDouble());      }      if(args.equals(args[0]))      {         mean = Stats.mean(data);         System.out.println("Mean: " + mean);      }      else if(args.equals(args[1]))      {         standardDeviation = Stats.stdDev(data);         System.out.println("StdDev: " + standardDeviation);      }      else      {         mean = Stats.mean(data);         System.out.println("Mean: " + mean);      }     // mean = Stats.mean(data);    //standardDeviation = Stats.stdDev(data);    //System.out.println("Mean: " + mean);    // System.out.println(" StdDev: " + standardDeviation);   }  }
查看完整描述

4 回答

?
喵喔喔

TA貢獻(xiàn)1735條經(jīng)驗(yàn) 獲得超5個(gè)贊

您正在覆蓋變量。這應(yīng)該是這樣的:args


public class StatDriver

{


   public static void main(String[] args)

   {

      Scanner input = new Scanner(System.in);


      double total;

      double mean;

      double standardDeviation;

      double average;



      total = 0;


      String[] possibleArgs = new String[2];

      possibleArgs[0] = "mean";

      possibleArgs[1] = "std";


      ArrayList<Double> data = new ArrayList<Double>();


      while(input.hasNextDouble())

      {

         data.add(input.nextDouble());

      }


      if(possibleArgs[0].equals(args[0]))

      {

         mean = Stats.mean(data);

         System.out.println("Mean: " + mean);

      }


      else if(possibleArgs[1].equals(args[1]))

      {

         standardDeviation = Stats.stdDev(data);

         System.out.println("StdDev: " + standardDeviation);

      }


      else

      {

         mean = Stats.mean(data);

         System.out.println("Mean: " + mean);

      }


   }  


}


查看完整回答
反對(duì) 回復(fù) 2022-08-03
?
胡說叔叔

TA貢獻(xiàn)1804條經(jīng)驗(yàn) 獲得超8個(gè)贊

如何使用 一個(gè),并在其中有一個(gè)方法,該方法具有與類的方法相同的覆蓋簽名:interfaceStat


interface StatsOperation{

       double compute(List<Double> data);

}

雖然類將如下所示:Stat


class Stats{

        public static double mean(List<Double> data){

            System.out.println("mean invoked");

            //compute mean 

        }

        public static double stdDev(List<Double> data){

            System.out.println("stddev invoked");

           //compute std dev

        }

 }

現(xiàn)在,在 main 方法中,您可以使用 a 來保存類的方法引用(假設(shè)您使用的是 Java-8):MapStats


public static void main(String[] args) {

        Scanner input = new Scanner(System.in);

        Map<String, StatsOperation> lookup = new HashMap<>();

        lookup.put("mean", Stats::mean); //"mean" corresponds to Stats::mean implementation

        lookup.put("stddev", Stats::stdDev); //"stddev" corresponds to Stats::mean implementation

        ArrayList<Double> data = new ArrayList<Double>();

        while(input.hasNextDouble())

        {

            data.add(input.nextDouble());

            if(data.size() == 5) break; //breaking after 5 elements

        }

        StatsOperation operation = args.length > 0 && lookup.get(args[0]) != null ? lookup.get(args[0]) : lookup.get("mean"); //by default calling mean if nothing is sent in args array

        double result = operation.compute(data);

        System.out.println("Output " + result);

        // other business logic below

 }

因此,根據(jù)您在數(shù)組中傳遞的值,我們將通過從 中獲取實(shí)現(xiàn)來調(diào)用該操作。這采用運(yùn)行時(shí)多態(tài)性來決定在運(yùn)行時(shí)調(diào)用哪個(gè)方法。argsMap


查看完整回答
反對(duì) 回復(fù) 2022-08-03
?
青春有我

TA貢獻(xiàn)1784條經(jīng)驗(yàn) 獲得超8個(gè)贊

當(dāng)使用Java反射功能時(shí),解決方案很簡(jiǎn)單。這是代碼


    import java.lang.reflect.Method;

    import java.util.ArrayList;

    import java.util.Scanner;


    public class StatDriver {


        public static void main(String[] args)

        {

            Scanner input = new Scanner(System.in);

            ArrayList<Double> data = new ArrayList<Double>();


            while(input.hasNextDouble()) {

                data.add(input.nextDouble());

            }


            int length = args.length;


            if(length == 0) {

                double mean = Stats.mean(data);  // By default , mean method is called

        System.out.println(" Result (Mean) :"+mean);

    }

    else if(length > 0) {

        String methodName = args[0];


        try {

            Method method = Stats.class.getMethod(methodName, ArrayList.class);

            method.setAccessible(true);

            Object result = method.invoke(null , data);

            System.out.println("Result of the method :"+methodName+" is "+result);

                }

                catch(Exception e) {

                    e.printStackTrace();

                }

            }

        }

    }


    class Stats{


        public static double mean(ArrayList aList) {

            double result = 0.0D;

            //Logic here

            return result;

        }


        public static double stdDev(ArrayList aList) {

            double result = 0.0D;

            //Logic here

            return result;

        }

    }


查看完整回答
反對(duì) 回復(fù) 2022-08-03
?
慕的地10843

TA貢獻(xiàn)1785條經(jīng)驗(yàn) 獲得超8個(gè)贊

命令行參數(shù)是在命令行上的“java classname”之后指定的單詞。因此,如果您執(zhí)行以下命令:


java Statdriver mean

...您的方法將被賦予一個(gè)長(zhǎng)度為一的數(shù)組,包含為元素。mainargs"mean"


如果執(zhí)行此命令:


java Statdriver std

...您的方法將被賦予一個(gè)長(zhǎng)度為一的數(shù)組,包含為元素。mainargs"std"


在所有這些情況下,長(zhǎng)度為一。您應(yīng)該只檢查 。沒有 ,嘗試訪問它將引發(fā)異常。argsargs[0]args[1]


正如Andronicus所指出的,您正在嘗試為 分配值,而您不應(yīng)該這樣做。事實(shí)上,你根本不需要改變。argsargs


只需檢查是否等于每個(gè)有意義的字符串值:args[0]


  if (args[0].equals("mean"))

  {

     mean = Stats.mean(data);

     System.out.println("Mean: " + mean);

  }


  else if (args[0].equals("std"))

  {

     standardDeviation = Stats.stdDev(data);

     System.out.println("StdDev: " + standardDeviation);

  }


  else

  {

     mean = Stats.mean(data);

     System.out.println("Mean: " + mean);

  }

它有助于考慮您實(shí)際要檢查的內(nèi)容。好的代碼讀起來像自然思維或說話:“如果第一個(gè)參數(shù)是”均值“,則計(jì)算均值,否則如果第一個(gè)參數(shù)是”std“,則計(jì)算標(biāo)準(zhǔn)差”等等。


查看完整回答
反對(duì) 回復(fù) 2022-08-03
  • 4 回答
  • 0 關(guān)注
  • 108 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)