[1]实验目的:掌握 Java语言的基本语法、基本数据类型的使用方法,掌握从键盘输入基本类型的数据,熟练运用分支、循环等语句控制程序流程。
[2]实验内容:
1、编写一个Java应用程序,用户从键盘输入十名学生的信息,至少包括姓名、年龄、出生年月日、java课程实验成绩,成绩使用浮点数,年龄使用整型,程序将输出年龄、java课程实验成绩的平均值。
提示:Scanner对象调用nextDouble()或nextFloat()可以获取用户从键盘输入的浮点数。
package experiment1;
import java.util.*;
class Stu{
String[] name = new String[10];
int[] age = new int[10];
int age_total;
String[] birthday = new String[10];
float[] score = new float[10];
float score_total;
public Stu(){
int i=0;
System.out.println("请输入10位学生的姓名、年龄、出生年月日、java课程实验成绩\n");
Scanner ss=new Scanner(System.in);
while(i<10){
name[i] = ss.next();
age[i] = ss.nextInt();
age_total+=age[i];
birthday[i] = ss.next();
score[i] = ss.nextFloat();
score_total+=score[i];
i++;
}
System.out.println("平均年龄为:"+ age_total/10);
System.out.println("平均成绩为:"+ score_total/10);
}
}
public class Exp1_1 {
public static void main(String[] args){
new Stu();
}
}
2、使用Arrays类实现数组排序:使用java.util包中的Arrays类的类方法public static void sort(double a[])可以把参数a指定的double类型数组按升序排序;public static void sort(double a[], int start , int end)可以把参数a指定的double类型数组中从位置start到end位置的值按升序排序。
给定数组int a[]={12,34,9,-23,45,6,90,123,19,45,34}; 从键盘读入一个整数,使用折半查找判断该整数是否在这个数组中,并将结果输出。
package experiment1;
import java.util.*;
class A{
int[] a ={12,34,9,-23,45,6,90,123,19,45,34};
A(){}
A(int[] x){
a=x;
}
int[] Sort(){
int[] b = new int[a.length];
System.arraycopy(a, 0, b, 0, a.length);;
Arrays.sort(b);
return b;
}
int[] getAarray(){
return a;
}
StringBuffer Search(int key){
StringBuffer Index = new StringBuffer();
int low=0,high=a.length-1,mid;
while(low<=high)
{
mid=(low+high)/2;
if(a[mid]==key) {
Index.append(mid+1).append(" ");
for(int i=mid-1;i>=0;i--) {
if (a[i] == key)
Index.append(i + 1).append(" ");
}
for(int i=mid+1;i<a.length;i++) {
if (a[i] == key)
Index.append(i + 1).append(" ");
}
break;
}
else if(a[mid]<key) low=mid+1;
else high=mid-1;
}
return Index;
}
StringBuffer getIndex(int key){
StringBuffer Index = new StringBuffer();
int j=0;
for(int i=0; i<a.length; i++)
{
if(a[i]==key){
Index.append(i+1).append(" ");
j++;
}
}
return Index;
}
}
public class Exp1_2 {
public static void main(String[] args){
A a = new A();
A a_sorted = new A(a.Sort());
System.out.println("排序前数组为:"+ Arrays.toString(a.getAarray()));
System.out.println("排序后数组为:"+ Arrays.toString(a_sorted.getAarray()));
while(true){
System.out.println("输入查询元素:按#键退出:");
Scanner ss = new Scanner(System.in);
String x = ss.next();
if(Objects.equals(x, "#"))
System.exit(0);
else {
int y = Integer.parseInt(x);
if (a_sorted.Search(y).length() == 0)
System.out.println("查找失败,该元素不在数组中!");
else {
System.out.println("排序前的位置为:" + a.getIndex(y));
System.out.println("排序后的位置为:" + a_sorted.Search(y));
}
}
}
}
}
*3、输出100~200之间的所有素数。
package experiment1;
public class Exp1_3 {
public static void main(String[] args)
{
System.out.println("100~200之间的所有素数有:");
int i,j;
for(i=100;i<=200;i++)
{
for(j=2;j<i;j++)
{
if(i%j==0) break;
}
if(j==i) System.out.println(i);
}
}
}
*4、采用for循环求1至1000之内的所有“完全数”。所谓“完全数”是指一个数,恰好等于它的因子之和。例如,6是一个完全数,因为6的因子为1、2、3,而6=1+2+3。
package experiment1;
public class Exp1_4 {
public static void main(String[] args)
{
System.out.println("1到1000内的完全数有:");
int i,j;
for(i=1;i<=1000;i++)
{
int sum=0;
for(j=1;j<i;j++)
{
if(i%j==0) sum+=j;
}
if(sum==i) System.out.println(i);
}
}
}
*5、已知XYZ+YZZ=532,其中X、Y和Z为数字,编程求出X,Y和Z的值。
package experiment1;
public class Exp1_5 {
public static void main(String[] args)
{
for(int i=0;i<10;i++)
{
for(int j=0;j<10;j++)
{
for(int k=0;k<10;k++)
{
if(i*100+j*110+k*12==532)
{
System.out.println("X、Y、Z的值分别为:"+i+"、"+j+"、"+k);
}
}
}
}
}
}
[3]实验分析
通过本次实验熟悉了Java语言的语法和基本数据类型的使用方法,特别是掌握了Java中基本数据的输入和输出。