前置知识
标识符:Java语言使用的是Unicode字符集,使用2个字节表示一个符号,总共可描述65536个不同的符号,基本上可以描述世界上所有国家的文字。因此,除可以使用通常的方式来命名标识符之外,也可以使用中文、日文、朝鲜文作为标识符。但是,对于程序员来说:最好还是使用遵从一般规范。
在Java语言中规定了各基本类型的数据所占的固定字节数。分别如下:
Boolean | 1个字节 |
---|---|
byte | 1个字节 |
short | 2个字节 |
char | 2个字节 |
int | 4个字节 |
long | 8个字节 |
float | 4个字节 |
double | 8个字节 |
与C语言不同的是,Java语言中增加了boolean类型,即逻辑类型(布尔类型),其变量只有2个常量值,绝对不能与C中的非0就是真、0就是假混淆。
运算规则、选择结构、循环结构与C语言基本一致,不再赘述了。
数组属于特殊的类,每个数组都是一个对象。对象都是指针。
一维数组的声明、定义、赋值(创建数组),访问(包括使用foreach方式,Java中新增加的遍历方式),数组的元素个数
二维数组:C语言里面的的二维数组存在栈空间中。
Java里面的二维数组存在堆空间中。
C语言二维数组的第二维长度必须和第一维长度一致,而Java语言中的二维数组第二维不必与第一维长度一致。
基础题
第一题参考代码
import java.util.Scanner;
public class 实验2_1 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String num = scanner.next();
String[] str = num.split("\\.");
System.out.println("整数部分"+str[0]);
System.out.println("小数部分0."+str[1]);
}
}
第二题参考代码
import java.util.Scanner;
public class 实验2_2 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int[] a = new int[10];
for(int i=0;i<10;i++){
a[i] = scanner.nextInt();
}
for(int i=0;i<10-1;i++){
for(int j=0;j<10-i-1;j++){
if(a[j]>a[j+1]){
int temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
}
}
}
for(int k=0;k<10;k++){
System.out.print(a[k]+" ");
}
System.out.println("最大值是"+a[9]);
System.out.println("最小值是"+a[0]);
}
}
第三题参考代码
import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
import java.util.Calendar;
import java.util.Date;
import java.util.Scanner;
public class 实验2_3 {
public static void main(String[] args) throws Exception {
Scanner scanner = new Scanner(System.in);
System.out.println("请按顺序输入年月日");
String year = scanner.next();
String month = scanner.next();
String day = scanner.next();
Date date = new Date();
String dateString = year+"-"+month+"-"+day;
System.out.println(dateString);
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
date = dateFormat.parse(dateString);
String[] weeks = {"星期日","星期一","星期二","星期三","星期四","星期五","星期六"};
Calendar cal = Calendar.getInstance();
cal.setTime(date);
int week_index = cal.get(Calendar.DAY_OF_WEEK) - 1;
if(week_index<0){
week_index = 0;
}
System.out.println("这天是"+weeks[week_index]);
int yearInt = Integer.parseInt(year);
int monthInt = Integer.parseInt(month);
int dayInt = Integer.parseInt(day);
LocalDateTime time = LocalDateTime.of(yearInt,monthInt, dayInt, 0 ,0 ,0);
int dayOfYear = time.getDayOfYear();
System.out.printf("这天是%d年的第%d天",yearInt,dayOfYear);
}
}
第四题参考代码
import java.util.Scanner;
/*
* 判断一个整数是否是素数*/
public class 实验2_4 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int num = scanner.nextInt();
if(prime(num)){
System.out.println(num+"是素数");
}else {
System.out.println(num+"不是素数");
}
}
static boolean prime(int num){
if(num<=1) return false;
for(int i=2;i<=Math.sqrt(num);i++){
if(num%i==0){
return false;
}
}
return true;
}
}
第五题参考代码
/*
* 输入一个数,求它的所有因子
* 一个数,如果存在可以被它整除的数且这些数不包括它本身,则这些书都是该数的因子。
* 规定0没有因子,1的因子是1,其他的比如4的因子有“1”、“2” */
import java.util.Scanner;
public class 实验2_5 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int num = scanner.nextInt();
System.out.print(1+" ");
for(int i = 2;i<=Math.sqrt(num);i++){
if(num%i==0){
System.out.println(i+" ");
System.out.println(num/i+" ");
}
}
}
}
第六题参考代码
import java.util.Scanner;
public class 实验2_6_1 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int num = scanner.nextInt();
System.out.println(num+"的二进制是"+Integer.toBinaryString(num));
System.out.println(num+"的八进制是"+Integer.toOctalString(num));
System.out.println(num+"的十六进制是"+Integer.toHexString(num));
}
}
/*
* 16进制转10进制*/
import java.util.Scanner;
public class 实验2_6_2 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String Hexnum = scanner.next();
int num = Integer.parseInt(Hexnum,16);
System.out.println(num);
}
}
第七题参考代码
import java.util.Scanner;
public class 实验2_7 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String str = scanner.next();
int[] cnt = new int[54];
for(int i=0;i<str.length();i++){
char ch = str.charAt(i);
if((ch>=65&&ch<=90 )||( ch>=97&&ch<=122)){
int index = ch-65;
cnt[index]+=1;
}
}
for(int j=0;j<cnt.length;j++){
if(cnt[j]!=0){
System.out.println((char)(j+65)+"出现"+cnt[j]+"次。");
}
}
}
}