新手学习,刚学到了方法,但其中但参数和方法调用其实不是很明白。跟着课本做了一道题。附上题目和我的代码。请求各方面的指点,改进我的代码也好。指出不对的也好。提供新的解题方法或代码的也好,多多益善:
题目如下:
一个五角数被定义为n(3n-1)/2,其中n=1,2,3,4,5··············所以,开始的几个数字就是1,5,12,22 编写下面的方法,返回一个五角数。
public static int getPentagonalNumber(int n)
编写一个测试程序显示前100个五角数,每行显示10个。
以下是我的代码:必须坦白,是在室友的帮助下写出来的。
public class A6_1 {
public static int getPentagonalNumber(int n){
int wjs=n*(3*n-1)/2;
return wjs;
}
public static void main(String[] args){
for(int i=1;i<=100;i++){
System.out.print(getPentagonalNumber(i)+"\t");
if(i%10==0){
System.out.println();
}
}
}
}
学走路的方法是学习走路本身,而不是去跟着人家的脚印走,同样的道理。学习编程绝对不是去模仿人家的代码,而是搞清楚算法。相同的算法的情况下,程序有无数的写法。
好比同样走路,每个人走出的脚印都不完全相同。去研究这个没有任何意义。就你的程序来说,用的方法就是循环,死算。加上一个输出格式的控制。这就是最好的写法了。
你这个初始程序可以说完全是面向过程(可能只是基于过程的:程序具体怎么做,你就怎么写)——但其实你看,java本身的要求就是面向对象的。
所谓面向对象,就是在考虑可扩展性和原始代码的重用性的基础上衍生出来的。
我建议你的学习路线是:基于过程->面向过程(操作函数封装)->基于对象(一类实例的集合,封装思想)->面向对象(良好的重用性)->面向接口或者方面(超高的可扩展性)。
现在,用java还是用C写这些小程序,区别都不大,只是按部就班。但以后分化会越来越严重,及早培养出面向对象的写作习惯好一些。
主要是理解思想,知道最基本的思想,然后就是改进了,比如,n(3n-1)/2 ,除2 可以使用右移操作
申明:在下并不是有意误导题主的,不过你在学习之路上多多吸取面向对象的思维方法是必要的~其他地方如果我说的有什么问题的,请听楼上caozhy兄的建议。
楼上几位给出的建议已经非常全面。如果说给你的代码提一些建议的话:
1、注意一下编码规范,如各级的缩进、适当的空行等。
2、注意一下命名规范,类名、方法名等最好是有意义的名字
谢谢大家的指点意见。很感谢!!!!