我是Java編程的初學者。我在開發基于 Prime Checker 的程式時遇到了這個問題。已經指定了;
編輯器中的鎖定代碼將使用一個或多個整數引數呼叫 checkPrime 方法。您應該以代碼僅列印素數的方式撰寫 checkPrime 方法。請仔細閱讀編輯器中給出的代碼。也請不要使用方法多載!
我想知道下面的Java程式注釋行后面的陳述句的作用是什么?
它們在鎖定代碼中的用途是什么?
import java.io.*;
import java.util.*;
import java.text.*;
import java.math.*;
import java.util.regex.*;
import java.lang.reflect.*;
import static java.lang.System.in;
class Prime
{
void checkPrime(int ... num)
{
for(int n:num)
{
int i,k=0;
for(i=1;i<=n;i )
{
if(n%i==0)
k;
}
if(k==2)
System.out.print(n " ");
}
System.out.println();
}
}
public class Solution
{
public static void main(String[] args)
{
try
{
BufferedReader br=new BufferedReader(new InputStreamReader(in));
int n1=Integer.parseInt(br.readLine());
int n2=Integer.parseInt(br.readLine());
int n3=Integer.parseInt(br.readLine());
int n4=Integer.parseInt(br.readLine());
int n5=Integer.parseInt(br.readLine());
Prime ob=new Prime();
ob.checkPrime(n1);
ob.checkPrime(n1,n2);
ob.checkPrime(n1,n2,n3);
ob.checkPrime(n1,n2,n3,n4,n5);
//What do the following statements from below till the end mean?
Method[] methods=Prime.class.getDeclaredMethods();
Set<String> set=new HashSet<>();
boolean overload=false;
for(int i=0;i<methods.length;i )
{
if(set.contains(methods[i].getName()))
{
overload=true;
break;
}
set.add(methods[i].getName());
}
if(overload)
{
throw new Exception("Overloading not allowed");
}
}
catch(Exception e)
{
System.out.println(e);
}
}
}
uj5u.com熱心網友回復:
基本上,它正在檢查您是否在 Prime 課程中完成了多載。它正在獲取在 Prime 類中宣告的所有方法。然后將它們的名稱存盤在集合中,這樣,如果集合中已經存在任何名稱。它會拋出例外,你有多載的函式,這在你的情況下是限制。
//getting all method in Prime
Method[] methods=Prime.class.getDeclaredMethods();
Set<String> set=new HashSet<>();
boolean overload=false;
//looping through all method array
for(int i=0;i<methods.length;i )
{
//checking if function already exist in set means, method is overloaded.
if(set.contains(methods[i].getName()))
{
overload=true;
break;
}
//adding method name in set. (set is used because, it does not hold
mutiple enteries for one value)
set.add(methods[i].getName());
}
//if overload has been done in class then will throw exception
if(overload)
{
throw new Exception("Overloading not allowed");
}
}
catch(Exception e)
{
System.out.println(e);
}
uj5u.com熱心網友回復:
該代碼只是從 Prime 類中提取方法名稱并確保沒有重復名稱。它通過檢查當前正在評估的方法名稱的一組方法名稱來迭代地執行此操作。在每次評估之后,方法名稱被添加到集合中,以便下一次迭代可以檢測下一個方法名稱是否已經存在。
checkPrime因此,“鎖定”代碼通過撰寫 4 個版本來檢查您是否符合不多載的要求。如果您也洗掉“鎖定”代碼,我認為您將失敗。
總而言之,由于有 4 個checkPrime使用不同數量的整數引數進行呼叫的示例,他們希望您演示撰寫一個checkPrime處理不同數量的整數引數的函式。
ob.checkPrime(n1);
ob.checkPrime(n1,n2);
ob.checkPrime(n1,n2,n3);
ob.checkPrime(n1,n2,n3,n4,n5);
有一種 Java 方法可以做到這一點。見:https ://www.baeldung.com/java-varargs
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/419633.html
標籤:
