我在我的问题前加上我对Java很新的说法,所以如果我的代码完全令人厌恶,我会道歉。
我尝试做的事情:我正在编写一个程序,该程序从用户获取两个整数,一个低值和一个高值,并将两个整数发送到两个不同的方法。方法#1有一个简单的for循环,应该打印出最小数字和最高数字之间的所有数字,它们是3或5的倍数,而方法#2除了数字为3或5的倍数之外都是相同的还检查该数字是否也是6的倍数,如果是,则打印数字和旁边的星号。
我遇到了什么问题:我非常难以接受我需要从我的方法中返回的内容&如何归还任何东西。这是我第一次正确地研究一种方法(刚刚从#34; 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);
}
}
MethodOne:
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);
}
MethodTwo:
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);
}
很抱歉,如果这篇文章看起来有点强劲,我只是发现添加我对代码的想法可能会帮助你向我解释出现了什么问题,因为你可能不知道我的无能程度: )
提前致谢。
答案 0 :(得分:1)
好的,班级有成员。
成员是一些变量或变量数组 和班级的方法。
所以你得到了
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: 要返回多个结果,您应该返回一个变量数组,而不仅仅是一个变量。 您也可以不返回任何内容,只需让它完成所需的数组即可。这个FORCES你虽然公开了这个数组。 (不是一个好习惯)
最后,如果需要多次返回值才能在控制台上打印它们......好吧,只需在方法中执行,不需要真正返回任何内容。
答案 1 :(得分:0)
mmmmm ...你可以返回类型,并且(int lowestRange,int highestRange)它不是一个类型。查看方法定义
public static int Asterisk(int lowestRange, int highestRange)
返回类型声明为int,因此您应该返回一个int值。你可以做点什么
return lowestRange;
return 1;
考虑到这一点,错误应该消失。问题是,为什么需要返回一个值?从我所读到的,你的方法是打印东西,而不是返回东西......
答案 2 :(得分:0)
您不需要返回任何内容,因为这些方法会打印出所有值。
您可以将它们更改为void方法,例如:
public static void asterisk(int lowest, int highest) {
//loops and if statements
//no return statement!
}
方法中的代码将运行,瞧,你完成了!
编辑:话虽如此,除了可以使这些代码更像Java之外,还有很多工作要做,但是现在这样做会有效。
答案 3 :(得分:-2)
返回语句不在方法之内。你必须把它们放在close方法括号之前。
public class MyClass{
public int sum (int a, int b){
return a + b;
} // The return have to be before this brackets
}