到目前为止我感觉如此接近!
/**
* A program that accepts and int input through 2 command line arguments then,
* calculates and prints all the prime numbers up to that integer
*/
public class Primes {
/**
* Main method takes in 2 command line arguments and calls
* necessary algorithm
*
* @param args command line arguments
*/
public static void main(String[]args) {
int a = Integer.parseInt(args[0]);
int n = Integer.parseInt(args[1]);
for(;args.length < 2;) {
if(a == 1){
System.out.println(algorithmOne(n));
/* }
else if(a == 2) {
//reference to method
}
else{ //reference to method
}*/
}
System.err.println(timeTaken());
}
}
/**Algorithm 1 method
*
*
*/
public static boolean algorithmOne(int n) {
for(int m = 2; m < n; m++) {
if(n%i == 0)
return false;
}
return true;
}
/**
* Method works out time taken to perform an algorithm
*
*
*/
public static void timeTaken() {
long startTime = System.currentTimeMillis();
long time = 0;
for(int i = 0; i < 1000; i++) {
time += i;
}
long endTime = System.currentTimeMillis();
System.out.println(endTime - startTime); //prints time taken
}
}
这是我到目前为止所写的内容。
我得到的错误是'void'类型在这里不允许,我研究并了解到:我使用的方法不会在需要值的地方返回值,例如右边的等号签名或参数到另一种方法。
问题是,我没有在我的代码中看到确切的位置! 此外,我有一种感觉,在我修复这个错误之后会出现更多错误,所以任何远见都会非常感激。
感谢您的时间和知识。
答案 0 :(得分:9)
你打电话:
System.err.println(timeTaken());
当:
public static void timeTaken() {
那么您期望打印什么? timeTaken
不返回任何值。
您可以做的是在timeTaken
上返回一个值:
public static long timeTaken() {
long startTime = System.currentTimeMillis();
long time = 0;
for(int i = 0; i < 1000; i++) {
time += i;
}
long endTime = System.currentTimeMillis();
long diff = endTime - startTime;
System.out.println(diff ); //prints time taken
return diff;
}
但请注意,您将值打印两次(均在timeTaken
内及其返回值)。
答案 1 :(得分:5)
在TimeTaken()的打印中会发生这种情况:
System.err.println(timeTaken());
你正在尝试打印无效的东西。 println
(自然地)没有超载接受无效。
答案 2 :(得分:3)
您正在timeTaken()
中呼叫System.out.println()
。这是不正确的,因为System.out.println()
需要获得一个或多个参数,并且由于您的方法没有返回任何内容,因此您收到错误。
您只需致电timeTaken()
(不含System.out.println()
)。它将打印您正在计算insde的差异,因为您已经在方法中打印它:
而不是:
System.out.println(timetaken());
使用:
timetaken();
答案 3 :(得分:3)
System.err.println(timeTaken());
您必须在此处收到错误:您正在调用System.err.println(timeTaken());
并且您的方法未返回任何内容,即void
。所以你的方法返回类型必须在那里。
或者你用这种方式调用这种方法。
timeTaken()
答案 4 :(得分:3)
您的方法timeTaken()不返回值,但您尝试使用行中的返回值:
System.err.println(""+timeTaken());
让它返回一个字符串以打印到控制台,或者只是调用方法。
答案 5 :(得分:3)
您最好使用IDE在Java中进行编码。 eclipse,netbeans等。
答案 6 :(得分:3)
将方法返回类型更改为long
,并在方法末尾添加return
语句。因此,您不会在第System.err.println(timeTaken());
行中收到错误
在您的代码中,timeTaken()
方法正在向void
发送System.err.println(..)
值,而在JAVA中,没有此类规范/设计可以将void
发送到任何方法参数。这就是它在第System.err.println(timeTaken());
行
/**
* Method works out time taken to perform an algorithm
*
*
*/
public static long timeTaken() {
long startTime = System.currentTimeMillis();
long time = 0;
for(int i = 0; i < 1000; i++) {
time += i;
}
long endTime = System.currentTimeMillis();
long totalTime = endTime - startTime;
System.out.println(totalTime); //prints time taken
return totalTime;
}