1.public class
做题时使用public class出了错,于是了解了一下用法。
1.如果定义public class的类,要求此类名必须和Java源文件名保持一致。
2.在同一个java文件中公共的类只能有一个(在同一个java文件中类名不能重复)。
2.Java中pow函数的使用
在Java中pow函数不能直接使用,要引用。
首先导入Math包,即 import static java.lang.Math.*
需要注意Java中pow函数是double类型的,如果要使用整数,需要转换类型。
import static java.lang.Math.*
int x = 3;
int y;
y = (int)pow(x,2) //求x的平方
3.快乐数
快乐数 的定义:
对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和。
然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。
如果这个过程 结果为 1,那么这个数就是快乐数。
题目:编写一个算法来判断一个数
n
是不是快乐数。如果
n
是 快乐数 就返回true
;不是,则返回false
。(来源LeetCode)
算法:快慢指针法
设定一个快指针,一个慢指针,在每一步中,快指针前进2个节点,慢指针前进1个节点。 如果
n
是一个快乐数,即没有循环,那么快指针最终会比慢指针先到达数字 1。如果n不是一个快乐的数字,那么最终快指针和慢指针将在同一个数字上相遇。
代码如下:
class Solution {
public int getNext(int n) {
int totalSum = 0;
while (n > 0) {
int d = n % 10;
n = n / 10;
totalSum += d * d;
}
return totalSum;
}
public boolean isHappy(int n) {
int slow = n;
int fast = getNext(n);
while (fast != 1 && slow != fast) {
slow = getNext(slow);
fast = getNext(getNext(fast));
}
return fast == 1;
}
}
4.Java中的两个函数
在做题时,新学会了两个方法的用法。
1、indexOf方法
indexOf(String str): 返回指定字符str在字符串中(方法调用者)第一次出现处的起始索引,如果此字符串中没有这样的字符,则返回 -1。
indexOf(String str, int index): 返回从 index 位置开始查找指定字符str在字符串中第一次出现处的起始索引,如果此字符串中没有这样的字符,则返回 -1。
2.charAt方法
java.lang.String.charAt() 方法返回指定索引处的char值。索引范围是从0到length() - 1。对于数组索引,序列的第一个char值是在索引为0,索引1,
应用实例:
class Solution {
public boolean halvesAreAlike(String s) {
String a = s.substring(0, s.length() / 2);
String b = s.substring(s.length() / 2);
String h = "aeiouAEIOU";
int sum1 = 0, sum2 = 0;
for (int i = 0; i < a.length(); i++) {
if (h.indexOf(a.charAt(i)) >= 0) { //indexOf()返回指定字符在字符串中第一次出现处的起始索引,charAt()返回指定索引处的char值
sum1++;
}
}
for (int i = 0; i < b.length(); i++) {
if (h.indexOf(b.charAt(i)) >= 0) {
sum2++;
}
}
return sum1 == sum2;
}
}
5.写一个Java文件,熟悉类的定义、对象的创建、构造方法、方法重载、类的封装、继承、多态等
class Student { //定义学生类
protected String name;
protected int age;
protected boolean sex;
protected double score = -1;
public Student(String name, int age, boolean sex) {
this.name = name;
this.age = age;
this.sex = sex;
}
public Student(String name, int age, boolean sex, double score) {
this.name = name;
this.age = age;
this.sex = sex;
this.score = score;
}
public String getName(){
return name;
}
public void setName(String name) {
if (name.length() < 2 || name.length() > 4) {
System.out.println("抱歉,您输入的名字不合法。");
}
else {
this.name = name;
System.out.println(this.name);
}
}
public int getAge(){
return age;
}
public void setAge(int age) {
if(age > 130 || age < 0){
System.out.println("抱歉,您输入的年龄不合法。");
}
else {
this.age = age;
System.out.println(this.age);
}
}
public boolean getSex(){
return sex;
}
public void setSex(boolean sex) {
this.sex = sex;
if(sex){
System.out.println("女生");
}
else System.out.println("男生");
}
public double getScore() {
return score;
}
public void setScore(double score) {
if(score < 0 || score > 100){
System.out.println("对不起,您输入的成绩不在合理范围内。");
}
else {
this.score = score;
System.out.println(this.score);
}
}
public String toString() {
return "姓名:"+name + "— 年龄:" + age + "— 性别:" + sex + "— 成绩:" + score;
}
public void show() {
System.out.println(toString());
}
}
public class StudentTest { //定义学生测试类
public static void main(String[] args){
Student student1 = new Student("张三",18,false,85);
Student student2 = new Student("李四",19,true);
student1.show();
student1.setName("王");
student1.setAge(-18);
student1.setScore(110);
student1.setSex(false);
System.out.println(student1.getName());
System.out.println(student1.getSex());
System.out.println(student1.getAge());
System.out.println(student1.getScore());
}
}
import java.util.Scanner;
public class XiyouStudent extends Student{ //定义西邮学生类
String collegeName = "西安邮电大学";
private int num;
int[] score = {-1,-1,-1,-1,-1};
public XiyouStudent(int num,String name, int age, boolean sex) {
super(name, age, sex);
this.name =name;
this.age = age;
this.sex = sex;
this.num = num;
}
public String toString() {
return "序号" + num + "-姓名:" + name + "— 年龄:" + age + "— 性别:" + sex;
}
public void show() {
System.out.println(toString());
}
public int[] getScore2(int[] s){
int i;
for (i = 0;i < 5;i++) {
if (s[i] < 0 || s[i] > 5) {
System.out.println("抱歉,您输入的成绩不在合理范围内。");
return s;
}
else score[i] = s[i];
}
return score;
}
public void Countpass(){
int sum = 0;
double aver;
for(int i = 0;i < 5;i++){
sum += score[i];
}
aver = sum / 5;
if(aver >= 3){
System.out.println("合格");
}
else System.out.println("不合格");
}
public static void main(String[] args){
XiyouStudent student3 = new XiyouStudent(3,"王五",19,false);
student3.show();
System.out.println("请输入五次平均成绩:");
Scanner in = new Scanner(System.in);
int[] score = new int[5];
for (int i = 0; i < 5; i++) {
score[i] = in.nextInt();
}
student3.getScore2(score);
student3.Countpass();
}
}
在编写过程中遇到许多细节问题,认识到在学习完理论知识之后,一定要动手实践。