入门者学习门槛:关于要不要钻这个牛角尖
我自学java遇到了一个和困惑:
遇到一个新问题,老师讲了一个方法,绝对的经典代码,解决问题的逻辑方面感觉非常完美,这是已知高手的代码,而我作为一个入门学习者去解决问题,通常在知道这个代码之前,自己写了一个非常低级的代码,而且漏洞百出:编译通不过,逻辑混乱,低级错误横飞。
1.我想问下各位高手,你们入门的时候,是不是一开始解决问题的方法就已经和完美代码非常相似?
2.我如何取舍,我是不是应该在入门阶段,直接理解记忆这些非常高明处理问题的代码,不要太理会自己写的那些低级代码,因为仅仅为了证明自己的这个不太高明的蠢方法是可行的,带出的逻辑问题会越来越多,耗费时间越来越久。 当然也不是完全不理会,我意思是不要太深入,因为理会自己的代码,会帮助自己解决很多低级错误。我到底要不要钻牛角尖,一定要弄到自己写的那些代码(关键解决问题的方法跟老师讲的不是一个层次)可以解决新问题为止?
3.如果老是记忆别人高明的方法,那我应该从什么阶段开始可以自己解决问题?
在这里,希望高手们,多谈谈职业体验,java工作者到底从事什么工作?我自己java,以后到底会出事什么工作?就是去干什么?为了有竞争力找到工作,自学的时候,应该在哪方面努力?我有一个同学,他的工作就是DEBUG,他就是在看代码,而不是写代码,我想如果我从事和他一样的工作,我就没有必要太在意自己的那些低级代码。希望各位职业人在这方面多谈谈,为入门者指路!!!!
前面的路不清楚,自己就会非常焦躁,草木皆兵。请原谅我这个入门者问题的可笑。
技术论坛,还是写一点技术问题吧!这有个问题:
随机生成50个整数,范围[10 50],统计每个数字出现的次数,出现次数最多的数字及其个数,将每个数字及其出现次数打印出来,如果某数字没有出现,不打印,打印时按数字升序排列。
我不知道正确答案之前是这样想的
import java.util.Random;
public class Homework
{
public static void main(String[] args)//我前前后后花费了至少数个小时,并且是学习了正确方法后,改进了自己的愚蠢方法
{
int[] a = new int[50];
for (int i = 0; i < 50; i++)
{
Random ran = new Random();
a[i] = ran.nextInt(41) + 10;
System.out.print(a[i] + " ");
}
System.out.println();//定义一个数组,然后把50个随机数赋给它。
method(a);
}
public static void method(int[] a)
{
for (int l = 0; l < a.length - 1; l++)
{
for (int j = 0; j < a.length - 1 - l; j++)
{
if (a[j] > a[j + 1])
{
int temp = a[j];
a[j] = a[j + 1];
a[j + 1] = temp;
}
}
if (48 == l)
{
for (int k = 0; k < a.length; k++)
{
System.out.print(a[k] + " ");
}
}
}//然后把50个数冒泡升序排列
for (int m = 0; m < a.length; m++)//然后开始比较大小,我准备拿第一个数和后面的每个数比较,然后循环比较下去
{
for (int n = 0; n < a.length - 1; n++)
{
int x = 1;
if (a[m] == a[n + 1])
{
x++;
System.out.println(a[m]);
}
else
{
continue;
}
if (1 == x)
{
return;
}
System.out.print(a[m] + "出现的次数 " + x);
}
if (a[m +1] = a[m])//在这里,我发现,有重复的问题,我想解决重复的问题,于是这样写,卡住了,编译通不过。 {
return;
}
}
}
}
[解决办法]
一开始很难写出精品的,
自己先写,然后比较经典的代码,急不来的。。。
只有慢慢积累,时间久了水到渠成。。。
还有工作中与算法相关的工作不是很多,最起码我是这样。。。
[解决办法]
慢慢来,初学都这样的,编多点程序,写点项目,看看别人的代码,了解一下自己的优点和缺点,然后技术就会有飞越了,本人就是这样过来的。
[解决办法]
将随机生成的数字存放到TreeMap里,然后遍历一遍完事.
[解决办法]
一般是先弄自己的,自己也能实现同样效果后再去看老师的,在两者结合-进行思考后得到经验。