《学习Java日记》——实验一 Java语言基础训练

 以下为老师布置的实验作业:

1. 程序填空题 

(1)该程序可以在命令行窗口输出希腊字母表,请补全代码。

public class GreekAlphabet {

	public static void main(String[] args) {
		int startPosition=0,endPosition=0;
		char cStart='α',cEnd='ω';
		startPosition=cStart; //cStart做int型转换据运算,并将结果赋值给startPosition
		endPosition=cEnd; //cEnd做int型转换运算,并将结果赋值给endPosition
		System.out.println("希腊字母\'α\'在unicode表中的顺序位置:"+startPosition);
		System.out.println("希腊字母表:");
		for(int i=startPosition;i<=endPosition;i++) {
			char c='\0';
			c=(char)i; //i做char型转换运算,并将结果赋值给c
			System.out.print(" "+c);
			if((i-startPosition+1)%10==0)
				System.out.println("");  
		  	}
		}
	}

运行结果:

希腊字母'α'在unicode表中的顺序位置:945
希腊字母表:
 α β γ δ ε ζ η θ ι κ
 λ μ ν ξ ο π ρ ? σ τ
 υ φ χ ψ ω

 (2)该程序在命令行窗口输出数组的引用以及元素的值,请补全代码。

public class InputArray {

	public static void main(String[] args) {
	      int [] a = {100,200,300};
	      System.out.println("数组a的长度:"+ a.length);// 输出数组a的长度       
	      System.out.println("数组a的引用:"+ a);// 输出数组a的引用
	      int b[][]= {{1}, {1,1},{1,2,1}, {1,3,3,1},{1,4,6,4,1}};
	      System.out.println("二维数组b的一维数组的个数:"+(b.length-1));// 输出二维数组b的一维数组的个数
	      System.out.println(b[4][2]);
	      b[4] = a;//将数组a的引用赋给b[4]
	      System.out.println(b[4][2]);
	    }
	}

运行结果:

数组a的长度:3
数组a的引用:[I@123a439b
二维数组b的一维数组的个数:4
6
300

 (3)该程序中用户从键盘输入一个1~9999之间的数字,程序判断这个数是几位数,并判断这个数是否是回文数,请补全代码。(回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数) 

import java.util.Scanner;
public class Number {

	public static void main(String[] args) {
	      int number=0,d5,d4,d3,d2,d1;
	      Scanner reader = new Scanner(System.in);
	      System.out.println("输入一个1至99999之间的数");
	      number = reader.nextInt();
	      if(number>0 && number<100000)      //判断number在1至99999之间的条件
	      {        d5 = number/10000;        //计算number的最高位(万位)d5
	               d4 = number%10000/1000;   //计算number的千位d4
	               d3 = number%1000/100;     //计算number的百位d3
	               d2 = number%100/10;
	               d1 = number%10;
	                if(number/10000 > 0)  //判断number是5位数的条件
	                {  System.out.println(number+"是5位数");
	                   if(number == d5+10*d4+100*d3+1000*d2+10000*d1) //判断number是回文数的条件
	                   {   System.out.println(number+"是回文数");
	                   }
	                   else
	                   {   System.out.println(number+"不是回文数");
	                   }
	                }
	                else if(number/10000==0 && number/1000>0)  //判断number是4位数的条件
	                {  System.out.println(number+"是4位数");
	                   if(number == d4+10*d3+100*d2+1000*d1) //判断number是回文数的条件码
	                   {  System.out.println(number+"是回文数");
	                   }
	                  else
	                   {  System.out.println(number+"不是回文数");
	                   }
	                }
	                else if(number/1000==0 && number/100>0)  //判断number是3位数的条件
	                {  System.out.println(number+"是3位数");
	                   if(number == d3+10*d2+100*d1) //判断number是回文数的条件
	                   {  System.out.println(number+"是回文数");
	                   }
	                  else
	                   {  System.out.println(number+"不是回文数");
	                   }
	                }
	                else if(d2!=0)
	                {  System.out.println(number+"是2位数");
	                   if(d1==d2)
	                   {  System.out.println(number+"是回文数");
	                   }
	                  else
	                   {  System.out.println(number+"不是回文数");
	                   }
	                }
	                else if(d1!=0)
	                {  System.out.println(number+"是1位数");
	                   System.out.println(number+"是回文数");
	                }
	            }
	      else 
	      {System.out.printf("\n%d不在1至99999之间",number);
	      }
	   }
	}

运行结果:

输入一个1至99999之间的数
123
123是3位数
123不是回文数

2.编程题

(1) 写一个程序,在main方法里面定义一个数组,输出排序前的数组,将数组中的元素从小到大进行排序,输出排序后的数组。(程序1)

/*方法一:冒泡排序*/
public class BubbleSort {

	public static void main(String[] args) {
		int [] a= {9,5,3,6,4};
		System.out.print("冒泡排序前:");
		printArray(a);					//打印数组元素
		bubbleSort(a);					//调用排序方法
		System.out.print("冒泡排序后:");
		printArray(a);					//打印数组元素
	}
	//定义打印数组方法,接收一个参数
	public static void printArray(int[] a) {
		//循环遍历数组的元素
		for(int i=0;i<a.length;i++) {
			System.out.print(a[i]+" ");	//打印元素和空格
		}
		System.out.print("\n");
	}
	//定义冒泡排序方法
	public static void bubbleSort(int[] a) {
		//定义外层循环
		for(int i=0;i<a.length-1;i++) {
			for(int j=0;j<a.length-i-1;j++) {
				if(a[j]>a[j+1]) {		//比较相邻元素
					//下面的三行代码用于交换两个元素
					int temp=a[j];
					a[j]=a[j+1];
					a[j+1]=temp;
				}
			}
			System.out.print("第"+(i+1)+"轮排序后:");
			printArray(a);				//每轮比较结束打印数组元素
		}
	}
}

运行结果:

冒泡排序前:9 5 3 6 4 
第1轮排序后:5 3 6 4 9 
第2轮排序后:3 5 4 6 9 
第3轮排序后:3 4 5 6 9 
第4轮排序后:3 4 5 6 9 
冒泡排序后:3 4 5 6 9 

(2) 写一个方法,用来计算三角形的面积(参数为三个边长,实型,由键盘输入,面积计算用海伦公式:

  • formula

,p为三角形的半周长p=(a=b=c)/2,使用方法Math.sqrt(),请查询JDK帮助文档,java.lang.Math类里面定义的方法),在main方法里面调用该方法,输出面积计算的结果。(程序2)

import java.util.Scanner;
public class Area_of_triangle {

	public static void main(String[] args) {
		double a;
		double b;
		double c;
		Scanner reader = new Scanner(System.in);
		System.out.println("输入所求三角形的三个边长");
		a = reader.nextInt();
		b = reader.nextInt();
		c = reader.nextInt();
		double s = Area(a,b,c);		//调用Area方法
		System.out.println("三角形的面积为"+s);
		reader.close();
	}
	
	//下面定义了一个求三角形面积的方法,接受三个参数
	public static double Area(double a,double b,double c) {
		double p =(a+b+c)/2;
		double s = Math.sqrt(p*(p-a)*(p-b)*(p-c));
		return s;	//返回三角形的面积
	}
}

运行结果: 

输入所求三角形的三个边长
3 4 5
三角形的面积为6.0

(3) 使用一个二维数组存放如下图形的字符

*

* * *

* * * * *

* * * * # * *

找到字符#,并打印出它在二维数组中的下标。(程序3)

public class Test3 {

	public static void main(String[] args) {
		char [] [] str=new char[4][];		//定义一个长度为4的二维数组
		str[0]=new char[] {'*'};			//存放字符
		str[1]=new char[] {'*','*','*'};
		str[2]=new char[] {'*','*','*','*','*'};
		str[3]=new char[] {'*','*','*','*','#','*','*'};
		for(int i=0;i<str.length;i++) {			//遍历数组元素
			System.out.println(str[i]);			//打印数组
			for(int j=0;j<str[i].length;j++) {	//遍历每行的元素
				if (str[i][j]=='#') {			//找出#,并输出下标
					System.out.println("#的行下标为"+i+",列下标为"+j);
				}
			}
		}
	}
}

运行结果: 

*
***
*****
****#**
#的行下标为3,列下标为4
  • 4
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Good_Omens

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值