Java小程序.docx
- 文档编号:23826686
- 上传时间:2023-05-21
- 格式:DOCX
- 页数:40
- 大小:23.68KB
Java小程序.docx
《Java小程序.docx》由会员分享,可在线阅读,更多相关《Java小程序.docx(40页珍藏版)》请在冰豆网上搜索。
Java小程序
一.利用基本知识编写的重要小程序
1.求1+2+3+....+10=?
publicclasstest4_2
{
publicstaticvoidmain(Stringargs[])
{
intx=1,y=0;
do
{
y+=x;
x++;
}
while(x<=10);
System.out.println("1+2+3+....+10="+y);
}
}
2.对任意的四个数进行从小到大排序(冒泡法)
publicclasstest4_2{
publicstaticvoidmain(String[]args){
//TODOAuto-generatedmethodstub
intb[]=newint[4];
System.out.println("请输入四个数:
");
for(inti=0;i<4;i++){
java.util.Scannery=newjava.util.Scanner(System.in);
b[i]=y.nextInt();
}
for(intj=0;j<3;j++){
for(intk=j+1;k<4;k++){
if(b[j]>b[k]){
intn;
n=b[j];
b[j]=b[k];
b[k]=n;
}
}
}
for(inti=0;i<4;i++){
System.out.println((b[i]));
}
}
}
3.计算器程序编写
publicclasstest4_2
{
publicstaticvoidmain(Stringargs[])
{
System.out.println("如果您想进行加法运算,请输入1");
System.out.println("如果您想进行减法运算,请输入2");
System.out.println("如果您想进行乘法运算,请输入3");
System.out.println("如果您想进行除法运算,请输入4");
System.out.println("如果您想结束运算,请输入5");
for(inti=1;i<100;i++)
{
java.util.Scannersn=newjava.util.Scanner(System.in);
intx=sn.nextInt();
if(x==1||x==2||x==3||x==4)
{
System.out.print("请输入:
");
java.util.Scannery=newjava.util.Scanner(System.in);
floata=y.nextFloat();
floatc=y.nextFloat();
switch(x)
{
case1:
System.out.print((a+c));break;
case2:
System.out.print((a-c));break;
case3:
System.out.print((a*c));break;
case4:
System.out.print((a/c));break;
}
}
elseif(x==5)
break;
else
System.out.print("您输入的数不符合要求!
请重新输入");
}
}
}
4.打印正三角形
publicclasstest4_2
{
publicstaticvoidmain(Stringargs[])
{
for(inti=0;i<5;i++)
{
for(intj=5-i;j>0;j--)
System.out.print("");
for(intk=0;k
System.out.print("*");
System.out.println("");
}
}
}
5.魔方打印
publicclassMoFang{
publicstaticvoidmain(String[]args){
//TODOAuto-generatedmethodstub
System.out.println("请输入一个奇数:
");
java.util.Scannery=newjava.util.Scanner(System.in);
intn=y.nextInt();
inta[][]=newint[20][20];
inti=n+1;
intj=n/2+1;
a[1][j]=1;//1的位置
intk=2;
for(;k<=n*n;k++){
i=i-1;
j=j+1;
if((i<1)&&(j>n)){
i=i+2;
j=j-1;
}else{
if(i<1)
i=n;
if(j>n)
j=1;
}
if(a[i][j]==0)
{
a[i][j]=k;
}
else{
i=i+2;
j=j-1;
a[i][j]=k;
}
}
for(i=1;i<=n;i++){//循环输出数组
for(j=1;j<=n;j++)
System.out.print(a[i][j]+"\t");
System.out.println("");
}
}
}
6.打印九九乘法表
publicclasstest2
{
publicstaticvoidmain(Stringargs[])
{
intx,y;
for(x=1;x<=9;x++)
for(y=1;y<=x;y++)
{
System.out.print(x+"*"+y+"="+x*y);
}
System.out.println();
}
}
}
7.猜数
publicclasscaishu{
publicstaticvoidmain(String[]args){
for(inti=0;i<1000;i++){
System.out.println("欢迎进入猜数游戏!
");
System.out.println("请选择:
");
System.out.println("如果您想进行猜数游戏,请选1!
");
System.out.println("如果您想退出猜数游戏,请选2!
");
java.util.Scannersc=newjava.util.Scanner(System.in);
inty=sc.nextInt();
if(y==1){
doubles=Math.random();
inta=(int)(s*1000);
if(a>=100&&a<=1000){
for(intj=0;j<1000;j++){
System.out.println("请任意输入一个大于100并且小于1000的数:
");
java.util.Scannersn=newjava.util.Scanner(System.in);
intx=sn.nextInt();
if(a System.out.println("您输入的值太大了! "); } if(a>x){ System.out.println("您输入的值太小了! "); } if(x==a){ System.out.println("恭喜您! 您输入的数与正确值相等! "); System.out.println("您一共输入了"+(j+1)+"次就获得了成功! "); break; } } } } elseif(y==2){ System.out.println("您已经退出猜数游戏! "); break; } } } } 8.求1到1000的素数之和? publicclasssushu{ publicstaticvoidmain(String[]args) { intsum=1;//1不是质数,2是质数,所以和sum先+1,这里判断是不是质数的循环从2开始的 for(inti=3;i<=1000;i++) { booleanb=false; for(intj=2;j<=Math.sqrt(i);j++) { if(i%j==0) { b=true; break; } else{ b=false; } } if(b==true){ sum=sum+i;//能整除不是素数,求和 } } System.out.println("所有非质数的和为: "+sum); } 二"=="与equals()方法的运用 1."=="运算符用与比较 publicclassTest { publicstaticvoidmain(Stringargs[]) { Stringstr1=newString("java"); Stringstr2=newString("java"); Stringstr3=str2; if(str1==str2) System.out.println("str1==str2"); else { System.out.println("str1! =str2"); } if(str2==str3) { System.out.println("str3==str2"); } else { System.out.println("str3! =str2"); } } } 运行结果: str1! =str2 str3==str2 2.equals方法用与比较 publicclassTest { publicstaticvoidmain(Stringargs[]) { Stringstr1=newString("java"); Stringstr2=newString("java"); Stringstr3=str2; if(str1.equals(str2)) System.out.println("str1.equals(str2)"); else { System.out.println("str1notequalsstr2"); } if(str2.equals(str3)) { System.out.println("str3equalsstr2"); } else { System.out.println("str3notequalsstr2"); } } } 运行结果: str1.equals(str2) str3equalsstr2 总结: string是一个特殊的类,当为该类创建对象时,并进行对象比较时,“==”用于比较两个对象的内存地址,而equals()方法则比较的是两个对象的地址是否相等。 3. classPerson { privateStringname; privateintage; publicPerson(Stringname,intage) { this.name=name; this.age=age; } } classtest { publicstaticvoidmain(stringargs[]) { Personp=newPerson("张三",25); Personp1=newPerson("张三",25); System.out.println(p.equals(p1)? "是同一个人": "不是同一个人"); } } 运行结果为: 不是同一个人 总结: 当为一个普通的类创建两个对象进行比较时,"equals()"的作用和"=="作用相同,都是进行地址比较。 这是因为在进行对象比较时,调用了object类中的equals()方法。 如何解决这一问题呢? 只需对object类中的equals()方法进行覆写即可。 例: classPerson { privateStringname; privateintage; publicPerson(Stringname,intage) { this.name=name; this.age=age; } publicbooleanequals(objecto) { booleantemp=true; Personp=this; if(oinstanceof(person)) { Personp1=(person)o; if(! (p.name.equals(p1.name)&&p.age=p1.age)) { temp=false; } } else { temp=false; } return=false; } } classTest { publicstaticvoidmain(stringargs[]) { Personp=newPerson("张三",25); Personp1=newPerson("张三",25); System.out.println(p.equals(p1)? "是同一个人": "不是同一个人"); } } 运行结果: 是同一个人 三。 构造方法的正确运用 例1: classPerson { stringname; intage; publicPerson() { System.out.print("构造方法的使用"); } } publicclassTest { publicstaticvoidmain(Stringargs[]) { Personp=newPerson(); } } 运行结果为: 构造方法的使用 结论: 1。 在使用构造方法时,名字应与类名相同。 2.构造方法无返回值。 3.构造方法无需直接调用,在创建对象时会自动调用。 例2 classPerson { privateStringname; privateintage; publicPerson(Stringname,intage) { this.name=name; this.age=age; } publicstringtalk() { return"我叫: "+this.name+",今年: "+this.age; } } publicclassTest { publicstaticvoidmain(Stringargs[]) { Personp=newPerson("周新明",20); System.out.print(p.talk()); } } 运行结果: 我叫周新明,今年20 结论: 1.构造方法可以重载。 2.在java中如果明确的声明了构造方法,则默认的构造方法不会自动生成。 如果以该例为例,如果不在p对象为构造方法传值,则会出现编译错误,这是因为无参构造方法已被有参构造方法重载,所以无参构造方法不能自动生成,那么如何解决这个问题呢? 只需在person类中在创建一个无参构造方法即可。 3.构造方法的作用就是: 为新创建的对象赋初值。 四.静态方法及静态变量的使用(也称类方法(变量)或类域) 例1 classPerson { privateStringname; privateintage; staticStringcity="中国"; publicPerson(Stringname,intage) { this.name=name; this.age=age; } publicstringtalk() { return"我叫: "+this.name+",今年: "+this.age+",来自: "+city; } } publicclassTest { publicstaticvoidmain(Stringargs[]) { Personp=newPerson("周新明",20); Personp1=newPerson("李光磊",20); System.out.println("修改之前: "+p.talk()); System.out.println("修改之前: "+p1.talk()); p.city="韩国";//也可改为: Person.city="韩国"; System.out.println("修改之后: "+p.talk()); System.out.println("修改之后: "+p1.talk()); } } 运行结果: 修改之前: 我叫周新明,今年20,来自: 中国 修改之前: 我叫李光磊,今年20,来自: 中国 修改之后: 我叫周新明,今年20,来自: 韩国 修改之后: 我叫李光磊,今年20,来自: 韩国 结论: 用static修饰的变量是所有对象共享的内存空间。 如果有一个对象内的变量发生修改,则所有对象内的变量都将发生变化。 例2 classSuper{ staticStringgreeting(){ return"Goodnight"; } Stringname(){ return"Richard"; } } classSubextendsSuper{ staticStringgreeting(){ return"Hello"; } Stringname(){ return"Dick"; } } publicclassTest{ publicstaticvoidmain(String[]args){ Supers=newSub(); System.out.println(s.greeting()+","+s.name()); } } 运行结果: Goodnight,Dick 结论: 1.通常在一个类中定义一个方法为static类型时,那么无需创建对象即可调用此方法,用类名.方法名()即可调用。 2如果在类中对拥有static方法的类进行对象实例化,但用对象名调用时,还是显示的是原来的方法,例: 父类中里有一个静态方法,子类覆写静态方法,如果在测试类中用子类对父类进行实例化时,在调用静态方法是,还是显示的是父类静态方法中的内容,父类相当于模板。 3.如果将测试类中的Super改为Sub,则运行结果为: Hello,Dick 五类的封装 例 classPerson { Stringname; intage; publicvoidsetName(Stringname) { this.name=name; } publicvoidsetAge(intage) { this.age=age; } publicStringgetName() { returnthis.name; } publicintgetAge() { returnthis.age; } publicstringtalk() { return"我叫: "+this.name+",今年: "+this.age; } } publicclassTest { publicstaticvoidmain(Stringargs[]) { Personp=newPerson(); p.setName("周新明"); p.setAege(20); p.talk(); } } 运行结果: 我叫周新明,今年20 结论: 1.类封装的原因: 阻止对象直接访问类的对象。 2.如果要给对象赋值有两种解决方法: 第一种方法是在该类中创建构造方法 第二种方法是在该类中创建setXxx()、getXxx()这样的公有方法 五.类的继承 例1 classPerson { stringname; intage; publicPerson() { System.out.println("1.publicPerson(){}"); } } classStudentextendsPerson { Stringschool; publicStudent() { System.out.println("2.publicPerson(){}"); } } publicclassTest { publicstaticvoidmain(Stringargs[]) { Students=newStudent(); } } 运行结果为: 1.publicPerson(){} 2.publicPerson(){} 结论: 1.在java中支持类的单继承和多层继承,但不支持多继承,即一个类不能继承多个类,就类似一个儿子只有一个亲爸。 2.子类对象在实例化时默认先去调用父类中的无参构造方法,之后再调用本类的构造方法。 例2 classPerson { stringname; intage; publicPerson(Stringname,intage) { this.name=name; this.age=age; } } classStudentextendsPerson { Stringschool; publicStudent() { super("周新明",20); } } publicclassT
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 程序
![提示](https://static.bdocx.com/images/bang_tan.gif)