rhy-blog1

前言

本学期Java课程的学习到今天为止主要分为:基本数据类型,分支,循环,数组与方法,面对对象编程,前四个板块可以总结为:Java程序设计的基础,应是为第一次学习语言就接触Java的初学者介绍的,这一部分基本与C语言相同,较为不同的就是Java对于格式的要求较为严格,更为繁琐与复杂,规定的格式较为C语言会更加的多,但这也保证了其稳定性。该部分对于学习过其他语言的学生来说难度并不是很大,但是加以学习也可以深刻认识到Java的基本框架基础结构,为接下来Java核心内容的学习进行一个良好的铺垫。第五个内容即为面对对象编程,该部分是Java课程核心内容,书本上分为了一、二、三,三个部分,主要就是阐述教学了类与对象,函数,静态变量,封装,包,访问控制修饰符,继承,成员覆盖,多态,抽象类和接口的教学。其中类、对象、函数可以被认为是面向对象编程的基本原理和基本概念;静态变量、封装、包、访问控制修饰符可以被认为是一些对面对对象概念的深入讲解以及面对对象的应用一些较为高级的概念;其余的:继承、成员覆盖、多态、抽象类和接口可以被认为是Java面对对象的高级应用。

知识点:

三次PTA运用了java中的循环结构、对象的创建和使用、创建匿名对象、变量的分类(成员变量和局部变量)、方法的分类以及调用、方法参数的传递机制(运用了方法参数值的传递机制)、方法的调用(方法调用的过程分析)、方法的重载、JavaSE 5.0 中提供了Varargs(variable number of arguments)机制,允许直接定 义能和多个实参相匹配的形参。从而,可以用一种更简单的方式,来传递个数可变的实参。递归方法(递归方法:一个方法体内调用它自身。)、封装和隐藏(信息的封装和隐藏)、 4种权限可以用来修饰类以及类的内部结构:属性,方法,构造器,内部类、类的成员之构造器(构造器重载,参数列表必须不同)方法的重写、

 

题量:

PTA1的题量很多,但是是 三个作业里面最简单的一个,也是我在三个作业中正确率最高的一个,PTA2的题量比PTA1的题量有所减少,但是难度也增加了很多,PTA3的题量和PTA2的题量相差不多,但是确实做起来很吃力,对于我这种菜鸡来说一时间无法适应,做不出来。总的来说,三次PTA作业的题量还是很多的,起码对于我来说很难胜任。

难度:

PTA1的难度是三个作业里边最简单的一个作业,也是我作业里边写的最完整最顺利的一个PTA作业,我觉得我可以接受这样的难度,但是到了PTA2作业的时候,我发现难度直线上升,难度大大增加了,做起来很吃力,能通过的测试点寥寥无几,所得的分数也较之PTA1少了很多很多。PTA3相较于PTA1和PTA2的难度又提升了很多,我觉得很难得分,超出了我的能力范围之外,作业所得的分也很少很少,总的来说,三次PTA作业的难度还是很大的,一次比一次困难了很多,对于我来说,一时间难以接受。

设计与分析

PTA1:

7-7 判断三角形类型

输入三角形三条边,判断该三角形为什么类型的三角形。

输入格式:

在一行中输入三角形的三条边的值(实型数),可以用一个或多个空格或回车分隔,其中三条边的取值范围均为[1,200]。

输出格式:

(1)如果输入数据非法,则输出“Wrong Format”;
(2)如果输入数据合法,但三条边不能构成三角形,则输出“Not a triangle”;
(3)如果输入数据合法且能够成等边三角形,则输出“Equilateral triangle”;
(3)如果输入数据合法且能够成等腰直角三角形,则输出“Isosceles right-angled triangle”;
(5)如果输入数据合法且能够成等腰三角形,则输出“Isosceles triangle”;
(6)如果输入数据合法且能够成直角三角形,则输出“Right-angled triangle”;
(7)如果输入数据合法且能够成一般三角形,则输出“General triangle”。

输入样例1:

在这里给出一组输入。例如:

50 50 50.0
 

输出样例1:

在这里给出相应的输出。例如:

Equilateral triangle
 

输入样例2:

在这里给出一组输入。例如:

60.2 60.2 80.56
 

输出样例2:

在这里给出相应的输出。例如:

Isosceles triangle
 

输入样例3:

在这里给出一组输入。例如:

0.5 20.5 80
 

输出样例3:

在这里给出相应的输出。例如:

Wrong Format

我的代码:

import java.util.Scanner;
public class Main{
public static void main(String[] args){
Scanner in=new Scanner(System.in);
float a=in.nextFloat();
float b=in.nextFloat();
float c=in.nextFloat();
if(a>200||a<=0||b>200||b<=0||c>200||c<=0){
System.out.print("Wrong Format");
}
else{
if(a+b<=c||a+c<=b||c+b<=a){
System.out.print("Not a triangle");
}
else{
if(a==b&&b==c){
System.out.println("Equilateral triangle");
return;
}
if((a==b)||(b==c)||(a==c))
{
if((a*a+b*b-c*c<0.1)||(a*a+c*c-b*b<0.1)||(b*b+c*c-a*a<0.1)){
System.out.println("Isosceles right-angled triangle");}
else
System.out.println("Isosceles triangle");
return;
}
if(a!=b||a!=c||b!=c)
if((a*a+b*b-c*c<0.1)||(a*a+c*c-b*b<0.1)||(b*b+c*c-a*a<0.1))
System.out.println("Right-angled triangle");
else
System.out.println("General triangle");
}
}
}
}

PTA2:

 我的代码:

import java.util.Scanner;

class Dish {
String name;
int unit_price;


Dish(String name, int unit_price) {
this.name = name;
this.unit_price = unit_price;
}

int getPrice(int portion) {
if (portion == 1) {
return unit_price;
} else if (portion == 2) {
return (int) Math.round(unit_price * 1.5);
} else if (portion == 3) {
return unit_price * 2;
} else {
return 0;
}
}
}

class Menu {
Dish[] dishs = new Dish[] {
new Dish("西红柿炒蛋", 15),
new Dish("清炒土豆丝", 12),
new Dish("麻婆豆腐", 12),
new Dish("油淋生菜", 9)
};


Dish searchDish(String dishName) {
for (Dish dish : dishs) {
if (dishName.equals(dish.name)) {
return dish;
}
}
return null;
}
}

class Record {
Dish d;
int portion;


int getPrice() {
if (portion != 1 && portion != 2 && portion != 3) {
return 0;
}
return d.getPrice(portion);
}
}

class Order {
Record[] records;
int numRecords;


Order() {
records = new Record[100];
}
Menu menu=new Menu();
Record addARecord(String dishName, int portion) {
Record record = new Record();
Dish dish = menu.searchDish(dishName);
if (dish == null) {
System.out.println(dishName + " does not exist");
return null;
} else {
record.d = dish;
record.portion = portion;
records[numRecords++] = record;
return record;
}
}


int getTotalPrice() {
int totalPrice = 0;
for (int i = 0; i < numRecords; i++) {
totalPrice += records[i].getPrice();
}
return totalPrice;
}
}

public class Main {
static Menu menu = new Menu();

public static void main(String[] args) {
Scanner input = new Scanner(System.in);
Order order = new Order();
String dishName;
int portion;

while (true) {
dishName = input.next();
if (dishName.equals("end")) {
break;
}
portion = input.nextInt();
Record record = order.addARecord(dishName, portion);
if (record != null && record.getPrice() == 0) {
System.out.println(dishName + " portion " + portion + " does not exist");
}
}

System.out.println(order.getTotalPrice());
}
}

PTA3:

7-1 菜单计价程序-3
分数 30
作者 蔡轲
单位 南昌航空大学

设计点菜计价程序,根据输入的信息,计算并输出总价格。

输入内容按先后顺序包括两部分:菜单、订单,最后以"end"结束。

菜单由一条或多条菜品记录组成,每条记录一行

每条菜品记录包含:菜名、基础价格 两个信息。

订单分:桌号标识、点菜记录和删除信息、代点菜信息。每一类信息都可包含一条或多条记录,每条记录一行或多行。

桌号标识独占一行,包含两个信息:桌号、时间。

桌号以下的所有记录都是本桌的记录,直至下一个桌号标识。

点菜记录包含:序号、菜名、份额、份数。份额可选项包括:1、2、3,分别代表小、中、大份。

不同份额菜价的计算方法:小份菜的价格=菜品的基础价格。中份菜的价格=菜品的基础价格1.5。小份菜的价格=菜品的基础价格2。如果计算出现小数,按四舍五入的规则进行处理。

删除记录格式:序号 delete

标识删除对应序号的那条点菜记录。

如果序号不对,输出"delete error"

代点菜信息包含:桌号 序号 菜品名称 份额 分数

代点菜是当前桌为另外一桌点菜,信息中的桌号是另一桌的桌号,带点菜的价格计算在当前这一桌。

程序最后按输入的先后顺序依次输出每一桌的总价(注意:由于有代点菜的功能,总价不一定等于当前桌上的菜的价格之和)。

每桌的总价等于那一桌所有菜的价格之和乘以折扣。如存在小数,按四舍五入规则计算,保留整数。

折扣的计算方法(注:以下时间段均按闭区间计算):

周一至周五营业时间与折扣:晚上(17:00-20:30)8折,周一至周五中午(10:30--14:30)6折,其余时间不营业。

周末全价,营业时间:9:30-21:30

如果下单时间不在营业范围内,输出"table " + t.tableNum + " out of opening hours"

参考以下类的模板进行设计:菜品类:对应菜谱上一道菜的信息。

Dish {

String name;//菜品名称

int unit_price; //单价

int getPrice(int portion)//计算菜品价格的方法,输入参数是点菜的份额(输入数据只能是1/2/3,代表小/中/大份) }

菜谱类:对应菜谱,包含饭店提供的所有菜的信息。

Menu {

Dish\[\] dishs ;//菜品数组,保存所有菜品信息

Dish searthDish(String dishName)//根据菜名在菜谱中查找菜品信息,返回Dish对象。

Dish addDish(String dishName,int unit_price)//添加一道菜品信息

}

点菜记录类:保存订单上的一道菜品记录

Record {

int orderNum;//序号\\

Dish d;//菜品\\

int portion;//份额(1/2/3代表小/中/大份)\\

int getPrice()//计价,计算本条记录的价格\\

}

订单类:保存用户点的所有菜的信息。

Order {

Record\[\] records;//保存订单上每一道的记录

int getTotalPrice()//计算订单的总价

Record addARecord(int orderNum,String dishName,int portion,int num)//添加一条菜品信息到订单中。

delARecordByOrderNum(int orderNum)//根据序号删除一条记录

findRecordByNum(int orderNum)//根据序号查找一条记录

}

### 输入格式:

桌号标识格式:table + 序号 +英文空格+ 日期(格式:YYYY/MM/DD)+英文空格+ 时间(24小时制格式: HH/MM/SS)

菜品记录格式:

菜名+英文空格+基础价格

如果有多条相同的菜名的记录,菜品的基础价格以最后一条记录为准。

点菜记录格式:序号+英文空格+菜名+英文空格+份额+英文空格+份数注:份额可输入(1/2/3), 1代表小份,2代表中份,3代表大份。

删除记录格式:序号 +英文空格+delete

代点菜信息包含:桌号+英文空格+序号+英文空格+菜品名称+英文空格+份额+英文空格+分数

最后一条记录以“end”结束。

### 输出格式:

按输入顺序输出每一桌的订单记录处理信息,包括:

1、桌号,格式:table+英文空格+桌号+”:”

2、按顺序输出当前这一桌每条订单记录的处理信息,

每条点菜记录输出:序号+英文空格+菜名+英文空格+价格。其中的价格等于对应记录的菜品\*份数,序号是之前输入的订单记录的序号。如果订单中包含不能识别的菜名,则输出“\*\* does not exist”,\*\*是不能识别的菜名

如果删除记录的序号不存在,则输出“delete error”

最后按输入顺序一次输出每一桌所有菜品的总价(整数数值)格式:table+英文空格+桌号+“:”+英文空格+当前桌的总价

本次题目不考虑其他错误情况,如:桌号、菜单订单顺序颠倒、不符合格式的输入、序号重复等,在本系列的后续作业中会做要求。

输入格式:

桌号标识格式:table + 序号 +英文空格+ 日期(格式:YYYY/MM/DD)+英文空格+ 时间(24小时制格式: HH/MM/SS)

菜品记录格式:

菜名+英文空格+基础价格

如果有多条相同的菜名的记录,菜品的基础价格以最后一条记录为准。

点菜记录格式:序号+英文空格+菜名+英文空格+份额+英文空格+份数注:份额可输入(1/2/3), 1代表小份,2代表中份,3代表大份。

删除记录格式:序号 +英文空格+delete

代点菜信息包含:桌号+英文空格+序号+英文空格+菜品名称+英文空格+份额+英文空格+分数

最后一条记录以“end”结束。

输出格式:

按输入顺序输出每一桌的订单记录处理信息,包括:

1、桌号,格式:table+英文空格+桌号+“:”+英文空格

2、按顺序输出当前这一桌每条订单记录的处理信息,

每条点菜记录输出:序号+英文空格+菜名+英文空格+价格。其中的价格等于对应记录的菜品\*份数,序号是之前输入的订单记录的序号。如果订单中包含不能识别的菜名,则输出“\*\* does not exist”,\*\*是不能识别的菜名

如果删除记录的序号不存在,则输出“delete error”

最后按输入顺序一次输出每一桌所有菜品的总价(整数数值)格式:table+英文空格+桌号+“:”+英文空格+当前桌的总价

本次题目不考虑其他错误情况,如:桌号、菜单订单顺序颠倒、不符合格式的输入、序号重复等,在本系列的后续作业中会做要求。

输入样例:

在这里给出一组输入。例如:

麻婆豆腐 12
油淋生菜 9
table 1 2023/3/22 12/2/3
1 麻婆豆腐 2 2
2 油淋生菜 1 3
end
 

输出样例:

在这里给出相应的输出。例如:

table 1: 
1 麻婆豆腐 36
2 油淋生菜 27
table 1: 38
 

输入样例1:

在这里给出一组输入。例如:

麻婆豆腐 12
油淋生菜 9
table 1 2023/3/22 17/0/0
1 麻婆豆腐 2 2
2 油淋生菜 1 3
1 delete
end
 

输出样例1:

在这里给出相应的输出。例如:

table 1: 
1 麻婆豆腐 36
2 油淋生菜 27
table 1: 22
 

输入样例2:

在这里给出一组输入。例如:

麻婆豆腐 12
油淋生菜 9
table 1 2023/3/22 16/59/59
1 麻婆豆腐 2 2
2 油淋生菜 1 3
1 delete
end
 

输出样例2:

在这里给出相应的输出。例如:

table 1: 
1 麻婆豆腐 36
2 油淋生菜 27
table 1 out of opening hours
 

输入样例3:

在这里给出一组输入。例如:

麻婆豆腐 12
油淋生菜 9
table 1 2022/12/5 15/03/02
1 麻婆豆腐 2 2
2 油淋生菜 1 3
3 麻辣鸡丝 1 2
5 delete
7 delete
table 2 2022/12/3 15/03/02
1 麻婆豆腐 2 2
2 油淋生菜 1 3
3 麻辣鸡丝 1 2
7 delete
end
 

输出样例3:

在这里给出相应的输出。例如:

table 1: 
1 麻婆豆腐 36
2 油淋生菜 27
麻辣鸡丝 does not exist
delete error;
delete error;
table 2: 
1 麻婆豆腐 36
2 油淋生菜 27
麻辣鸡丝 does not exist
delete error;
table 1 out of opening hours
table 2: 63
 

输入样例4:

在这里给出一组输入。例如:

麻婆豆腐 12
油淋生菜 9
table 1 2022/12/3 19/5/12
1 麻婆豆腐 2 2
2 油淋生菜 1 3
3 麻辣鸡丝 1 2
table 2 2022/12/3 15/03/02
1 麻婆豆腐 2 2
2 油淋生菜 1 3
3 麻辣鸡丝 1 2
1 4 麻婆豆腐 1 1
7 delete
end
 

输出样例4:

在这里给出相应的输出。例如:

table 1: 
1 麻婆豆腐 36
2 油淋生菜 27
麻辣鸡丝 does not exist
table 2: 
1 麻婆豆腐 36
2 油淋生菜 27
麻辣鸡丝 does not exist
4 table 2 pay for table 1 12
delete error;
table 1: 63
table 2: 75
我的代码:

import java.time.LocalDate;
import java.time.temporal.ChronoUnit;
import java.util.Scanner;

public class Main { public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String date1 = scanner.nextLine();
String date2 = scanner.nextLine();
String[] d1 = date1.split("-");
String[] d2 = date2.split("-");
LocalDate firstDate = LocalDate.of(Integer.parseInt(d1[0]), Integer.parseInt(d1[1]), Integer.parseInt(d1[2]));
LocalDate secondDate = LocalDate.of(Integer.parseInt(d2[0]), Integer.parseInt(d2[1]), Integer.parseInt(d2[2]));

if (firstDate.isBefore(secondDate)) {
System.out.println("第一个日期比第二个日期更早");
} else if (firstDate.isAfter(secondDate)) {
System.out.println("第一个日期比第二个日期更晚");
} else {
System.out.println("两个日期相同");
return;
}
long gapDays = Math.abs(ChronoUnit.DAYS.between(firstDate, secondDate));
System.out.println("两个日期间隔" + gapDays + "天");
long gapWeeks = gapDays / 7;
System.out.println("两个日期间隔" + gapWeeks + "周");
scanner.close();
}
}

踩坑心得

       1.在Java学习的过程中,要养成良好的习惯(写括号的时候要成对去写,字母大小写要区分开来,单词的拼写要准确)。
  2.在Java学习的过程中,最好不要仅仅停留在java学习的表层,不是抄书上的例子运行出结果就可以。要注意,即便对一个简单的例子也要有耐心去琢磨、调试、改动。
  3.在Java学习的过程中一定要亲手去写代码、尝试去做,而不能光靠着看书,学习理论知识就行的。很多知识和经验必须通过自己亲手实践之后才能真正变成属于自己的东西。
  4.在Java的学习过程中,可能会遇到各不相同的问题很难去解决,应该多去浏览一些专业的论坛和网站了解相关的知识,书本上的知识点毕竟是有限。要学会从网络上查找对自己有用的信息并进行整理,促进学习的深         入和知识水平的提高。
        5.在java学习的过程中,

主要困难以及改进建议

主要困难:

困难一:能看懂,不会写

困难二:学完就忘记

困难三:是否应该看书学

改进建议:

建议一:这或许是很多初学者会遇到的问题。就是看视频或者听课的时候,能看懂,但是就是不会写。这个时候我们或许需要换一个适合自己的学习方法。课前预习课后复习,经常练习,不断地敲代码,这样可以加深你对代码的印象。

建议二:我们如果克服了第一问题,就会立马迎来第二个问题,举个例子,比如我们的HTML标签和一些css属性,用浮动去实现一个效果,几天之后发现,这个我怎么不会用了,就在脑海中,怎么都想不起来。如何解决这个问题呢?我们学习每一个知识点,必须跟三个案例以上,只有应用到实处,实际操作中,才能更好地记忆,在你学习之后的知识点,要不断的温习前面的东西,不然一定会忘记。

建议三:见过很多新手说,买一本从入门到精通的Java书,如果你觉得看一本书就可以学好Java找工作,那这个工作好像谁都可以做,新手在初学Java时建议别看书,等你学完一遍Java之后,在去看书籍,这样可能效果会非常的好,对于你前面学习的一些没有太懂的东西,进行了查缺补漏。

总结

经过一个学期的学习,Java的课程已经快要结束了。可是我知道,学习java的路上,我们才刚刚起步。学Java之前我听许多人说Java很难,学了之后我感觉Java确实不容易,想学好它并非易事。我觉得学Java必须做到三步走:

1.课前认真预习。

2.课上认真听讲。

3.课下认真复习。

我想只有做好这三步,自己才能跟上老师的步子。

回想一下学习Java时的情景,我仍然兴奋不已。其实在刚接触Java时,自己确实有点晕,但经过一段时间学习,逐渐走出了迷雾。刚开始学习循环时,我觉得那一块很不熟悉,做题时,思路半天才理出来。经过一段时间的练习,我渐渐的走出了第一个迷雾。但是到了

第六章,我彻底晕了,看书看得也一知半解晕晕乎乎的。类与对象是在学了第七、八章后弄清的。到了最后一章,学到字符串时,传递参数真让我晕啊,然后我又是练习,最后略微弄明白了点。我总结了我学Java的特点:先是不懂,后明白,再次不懂,又明白,又一次晕,最后弄清。经过三起三落,经过几个迷雾之后,我对Java也有了更为深入的了解,就学会了Java。

Java学起来很有趣,通过学习Java可以提高自己的逻辑能力。在学习Java期间我们做了一些程序,我们班的同学也都积极准备,完成的还不错!在做程序时,我遇到了一些难题,有时也会出现错误,时间长了弄得我心烦意乱,但是我知道只有坚持下去才会成功。 因为Java是一种面向对象的编程语言,刚接触Java的人可能会感觉比较抽象,不过没关系不用着急,上课的时候认真听老师讲解,一些概念知识慢慢去理解,课后多做练习,熟能生巧,哪怕是你的记性再好,课后不去强化练习也没用,只有多练了,当你在做项目时你才能很熟练的写出你想要代码。平日在练习时若遇到不会的题目或是在项目中遇到解决不了的问题,首先不要急着去问老师,或是急着上百度搜答案,那样即使你得到了正确答案,以后在其它地方遇到同样的问题,你还是不知道怎么解决!所以说,在遇到问题时,自己先想想要怎么解决,回顾一下老师上课的内容,如果自己还是想不出什么好方法的话,也可以向同学请教请教,三人行必有我师,你不懂的地方其他同学可能知道。如果还是没能解决,那只有问老师或是上网搜索查找相应的解决方法了。好好理解其解决思路。真的弄不懂时我就问同学一起解决。通过几个阶段的练习,我觉得又把学过的知识复习了一遍,通过同学之间的交流沟通,我觉得我们班的学习氛围更加浓厚了。

我觉得把Java学会的关键一点就是坚持练习。学习Java时每天必须保证一定量的练习,我们老师也说学习编程语言没有捷径可走。真的,只有每天反复操作了,经常写代码了,我们在遇到问题时才有一定的思路。欲速则不达,学习编程语言需要一个比较漫长的阶段,不能一步登天,这需要一个过程,在这个过程中慢慢积累经验,扎实基础。不要以为写出了一个简单的小程序,就认为自己已经学的很好了,这只不过是在你学习编程过程中一个小小的实践。不要满足于现状,要不断完善自己的知识体系,善于总结实践经验。要端正自己的学习态度,是主动去学,而不是被动!提高自学能力。学习编程的秘诀是:编程、编程、再编程。不仅要多实践,而且要快实践。

我们在看书的时候,不要等到你完全理解了才动手敲代码,而是应该在看书的同时敲代码,程序运行的各种情况可以让你更快更牢固的掌握知识点。程序代码是软件开发最重要的成果之一,其中渗透了程序员的思想与灵魂。当你学习一个类以后,你就可以自己写个简单的例子程序来运行一下,看看有什么结果,然后再多调用几个类的方法,看看运行结果,这样非常直观的把类给学会了,而且记忆非常深刻。然后不应该满足把代码调通,你应该想想看如果我不这样写,换个方式,再试试行不行。记得哪个高人说过学习编程就是个破坏的过程,把书上的例子,自己学习Documentation编写的例子在运行通过以后,不断的尝试着用不同的方法实现,不断的尝试破坏代码的结构,看看它会有什么结果。通过这样的方式,你会很彻底的很精通的掌握Java。举个例子,我们都编过Hello World ,一开始很多同学不是很理解为什么main方法一定要这样来定义public static void main(String[] args),能不能不这样写? 我刚也有这样的疑问。想知道答案吗?很简单,你把main改个名字运行一下,看看报什么错误,然后根据出错信息进行分析;把main的public取掉,在试试看,报什么错误;static去掉还能不能运行;不知道main方法是否一定要传一个String[]数组的,把String[]改掉,改成int[],或者String试试看;不知道是否必须写args参数名称的,也可以把args改成别的名字,看看运行结果如何。我当初学习Java的时候就是这样做的,把Hello World程序反复改了七八次,不断运行,分析运行结果,最后就彻底明白为什么main方法是这样定义的了。这样虽然比较费时间,不过一个例子程序这样反复破坏几次之后。我就对这个相关的知识彻底学通了。有时候甚至故意写一些错误的代码来运行,看看能否得到预期的运行错误。这样对于编程的掌握是及其深刻的。

对学习编程来说,不要求英语,但不能一点不会,。最起码像JAAPI文档这些东西还是要能看懂的,连猜带懵都可以;旁边再开启一个金山词霸。看多了就会越来越熟练。在学JA的同时学习英文,一箭双雕多好。另外好多软件需要到英文网站下载,你要能够找到它们,这些是最基本的要求。英语好对你学习有很大的帮助。

学习Java这段时间,有时候会觉得有点苦,但是我觉得正是有了你奋斗时的苦,才能换来学成后的甜。当你经过认真写代码做完一个项目时,你会有一种成就感。心里有一种说不出的喜悦之情。

学习Java靠得是韧劲,靠得是拼劲,考得是坚持不懈。如果做好了这几点,我想Java对你来说不会太难。还有,你自己要有信心,相信自己能学会。

以上就是我在学了Java后的一些感言。

posted @ 2023-05-24 23:52    阅读(141)  评论(0)    收藏  举报