[英]Am I returning the correct value from my method & am I writing it correctly?
我将以我对Java非常陌生的陈述作为开头,因此,如果我的代码完全令人讨厌阅读,我深表歉意。
我正在尝试做的事情:我正在编写一个程序,该程序从用户那里接收两个整数,一个低值和一个高值,并将这两个整数发送到两种不同的方法。 方法1具有一个简单的for循环,应打印出介于3或5的倍数之间的最小数和最大数之间的所有数字,而方法2的功能相同,除了3或5的倍数之外。还检查该数字是否也是6的倍数,如果是,则在该数字旁边打印一个星号。
我遇到的问题:我很困惑我需要从方法中返回的内容以及如何返回所有内容。 这是我第一次正确地使用方法(只是从“ Hello World”上移了),从我所看到的来看,我真的不需要返回任何东西。我输入的所有代码方法几乎可以完成整个程序,所以我认为返回我发送的整数就足够了,显然这还不够,因此,事不宜迟,这是我的代码。
错误:
javac BonusQ.java
.\MethodOne.java:19: error: illegal start of type
return(int lowestRange, int highestRange);
^
.\MethodTwo.java:36: error: illegal start of type
return(int lowestRange, int highestRange);
^
主要的:
import java.util.Scanner;
public class BonusQ
{
public static void main(String [] args)
{
Scanner scan = new Scanner(System.in);
int lowestRange = 0;
int highestRange = 0;
System.out.println("Enter the lowest integer in your range");
lowestRange = scan.nextInt();
System.out.println("Enter the highest integer in your range");
highestRange = scan.nextInt();
MethodOne.NoAsterisk(lowestRange, highestRange);
MethodTwo.Asterisk(lowestRange, highestRange);
}
}
方法一:
public class MethodOne
{
public static int NoAsterisk(int lowestRange, int highestRange)
{
for(int i = lowestRange; i <= highestRange; i++)
{
if (i%5 == 0)
{
System.out.println(i);
}
else if (i%3 == 0)
{
System.out.println(i);
}
}
}
return(int lowestRange, int highestRange);
}
方法二:
public class MethodTwo
{
public static int Asterisk(int lowestRange, int highestRange)
{
for(int i = lowestRange; i <= highestRange; i++)
{
if (i%5 == 0)
{
if (i%5 == 0 && i%6 == 0)
{
System.out.println(i + "*");
}
else
{
System.out.println(i);
}
}
else if (i%3 == 0)
{
if (i%3 == 0 && i%6 == 0)
{
System.out.println(i + "*");
}
else
{
System.out.println(i);
}
}
}
}
return(int lowestRange, int highestRange);
}
抱歉,如果阅读该文章后显得有些beef肿,我发现在代码中添加我的想法可能会帮助您向我解释出了什么问题,因为您可能不知道我的职权范围:)
提前致谢。
好的,班级有成员。
成员是某些变量或变量数组以及类的方法。
所以你有
public class MyMethod
{
public static int Asterisk(int loRange, int hiRange)
{
// Do magic let's make a sum for this example
// You enter loRange and hiRange (you defined it above)
return loRange + hiRange // Here the method returns a result
}
}
// So then....
public static void main(String [] args)
{
// WHATEVER IS IN HERE RUNS ALWAYS FIRST.
z = Asterisk(1,2); // 1 and 2 is lo and hi range values ;)
// Z has a value of 3 now because Asterisk(1,2) returns 1 + 2
}
看看这是如何工作的? 现在这行得通了,因为您使用了静态定义(这意味着必须首先创建一个MyMethod实例才能使用该方法。这没错,但是如果您可以使程序使用类实例来做事,那么最好这样做。
使用特殊方法,可以创建一个类的实例,这称为对象。 此方法具有Class的确切名称,并构造其实例。 您现在应该研究构造函数,抽象类等。
我不能说你做错了还是正确。 它与程序的全部内容有关,您应该研究变量和方法的范围以及面向对象编程的封装概念。 仅使用静态方法违反了封装原则,这可能是错误的,但我不能确定。
我希望这对您有所帮助,并为您继续学习提供了良好的指导。
PS:要返回多个结果,您应该返回一个变量数组,而不仅仅是一个变量。 您也可以不返回任何内容,而只是将其完成所需的数组。 这迫使您将这个数组公开。 (不是一个好习惯)
最后,如果只需要在控制台上打印它们,就需要返回多个值……好吧,只需在方法中执行此操作即可,而无需真正返回任何内容。
mmmmm ...您可以返回类型,而不是类型(int minimumRange,int maximumRange)。 看一下方法定义
public static int Asterisk(int lowestRange, int highestRange)
返回类型被声明为int,因此您应该返回一个int值。 你可以做类似的事情
return lowestRange;
return 1;
考虑到这一点,错误应该消失。 问题是,为什么需要返回一个值? 根据我的阅读,您的方法适合打印内容,而不是返回内容...
您不需要返回任何内容,因为方法将打印出所有值。
您可以将它们更改为void方法,例如:
public static void asterisk(int lowest, int highest) {
//loops and if statements
//no return statement!
}
方法中的代码将运行,瞧,您完成了!
编辑:话虽这么说,要使此代码更像Java,还有很多事情要做,但是现在可以正常工作。
return语句不在方法中。 您必须将它们放在close方法方括号之前。
public class MyClass{
public int sum (int a, int b){
return a + b;
} // The return have to be before this brackets
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.