输入学生成绩判断等级
import java.util.Scanner;
public class demo24 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println(“请输入分数”);
int a = sc.nextInt();
level(a );
}
//编写程序,给定一个学生成绩,给出相应等级:(要求:请用方法实现,传入成绩参数,返回等级打印)
//
// 90~100 优秀
//
// 80~89 良好
//
// 70~79 中等
//
// 60~69 及格
//
// 0~59 不及格
public static void level (int a ){
/*
switch (a){
switch (a){
case 90<=x&&x <=100:
System.out.println("优秀");
break;
case 80<= x &&x <=89:
System.out.println("良好");
break;
case 70 <+ x&&x <=79 :
System.out.println("中等");
break;
case 60 <=x &&x <=69:
System.out.println("及格");
break;
case 5 0<= x && x <=59:
System.out.println("不及格");
break;
default :
System.out.println("输入的数据有误");
}*/
if (a>=90&&a<=100){
System.out.println("优秀");
}else if (a >=80&&a<=89){
System.out.println("良好");
}else if ( a >=70&&a<=79){
System.out.println("中等");
}else if(a >=60&&a<=69){
System.out.println("及格");
}else if (a >=0&&a<=59){
System.out.println("不及格");
}else {
System.out.println("您输入的数据有误");
}
}
个人心得:刚开始打算用课上学的switch语句来写,后面发现case上面会有int和double两个数据类型不兼容的问题,我想着再用之前学的强制转换来做,但是真不知道咋转救命,就换了个思路用if写,又快又简单,但是我就是想用switch写就又去尝试了,然后还是不行,弄得特别复杂,后来想想,为啥要简单问题复杂处理 ,还是在最适合的场景下用最适合的语句比较好。
输入数字判断是几位数
import java.util.Scanner;
public class demo23 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println(“请输入需要判断的数字”);
int a = sc.nextInt();
if (a > 0&& a <=99999){
System.out.println(“这是”+panduan(a)+“位数”);
}else {
System.out.println(“数字有误请输入0~99999之间的任意数!”);
}
}
//编写程序,从键盘输入一个 0~99999 之间的任意数,判断输入的数是几位数?
public static int panduan(int a){
int s = 1;
int n = a / 10;
while (n> 0){
s ++;
n /=10;
}
return s ;
}
}
个人思考见解:刚开始我是想用for循环然后计数累加的方法来做,后面发现毫无头绪,找攻略发现了while 方法,只要短短三行就可以解决问题,用for循环太多了形成思维定式不太好要学会在不同的场景用不同的循环语句来写。
验证鬼谷猜想
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println(“请输入一个数字”);
int a = sc.nextInt();
if (a >=1&&a <=1000){
get1(a);
//guigu(a);
}else {
System.out.println(“输入数据有误”);
}
//5,验证“鬼谷猜想”:对任意自然数,若是奇数,就对它乘以 3 再加 1;若是
//
//偶数,就对它除以 2,这样得到一个新数,再按上述计算规则进行计算,一直进
//
//行下去,最终必然得到 1。(1–1000)
}
/* public static void guigu(int a){
for ( int i = 0; if (a % 2 != 0) {
i = a * 3 + 1;
} else (a % 2 == 0) {
i = a / 2;
} )
{
System.out.println(a);
}
}*/
public static void get1(int a){
do{
if(a%2!=0){
a = a*3+1;
}else{
a /=2;
}
}while(a!=1);
System.out.println(a);
}
}
个人见解:看题目要求我觉得蛮简单,就是俩运算嘛,若是奇数,就对它乘以 3 再加 1;偶数,就对它除以 2,这样得到一个新数,再按上述计算规则进行计算,最后得到1),还是犯错误想用for循环写(注释的地方),写老半天写不出来,当时的思路是用for的死循环写,然后在值为1的适合break掉,奈何实现不了,后面想了下我并不明确循环次数为什么不用while语句?do…while的格式更适合这题,还是不要思维固化(踩坑三次了我还是没改救命,总结的时候才发现我在一个地方摔那么多次。)
求s=a+aa+aaa+aaaa+aa…a的值
import java.util.Scanner;
public class demo27 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println(“请输入原始数字”);
int a=sc.nextInt();
Scanner ss = new Scanner(System.in);
System.out.println(“请输入要相加的个数”);
int b=ss.nextInt();
get(a,b);
}
public static void get (int a , int b ){
int num=0;
int index=0;
int x = a ;
for (int i = 0; i <b ; i++) {
for (int j = 0; j <i ; j++) {
a=a*10;
}
num=num+a;
a=x;
index+=num;
}
System.out.println(index);
}
}
遇到的困难:不知道怎么体现a,aa,aaa…还有在后序累加计算中把a置零的操作如何做,
个人见解:首先可以看作,a10的零次方+0;a10的零
一次方+a…以此类推。在方法中分别定义三个变量,num:存储每次相加的数的值;index存储累加结果;x:等于初始值a,在后续方便置零操作,然后方法在上面就写出来啦。
小球落地第n次高度以及总经历里程
import java.util.Scanner;
public class demo28 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println(“请输入第几次落地”);
int a = sc.nextInt();
high(a);
}
//两个明确:数据类型:int;有无返回值:无
public static void high (int a ){
double hight=100;
double sum = 100;
for (int x =0 ;x <a ;x ++){
hight=hight/2;
sum += hight*2;
}
System.out.println("第"+a+"次落地有"+hight+"米高");
System.out.println("共经历"+(sum - hight-hight)+"米");;
}
}
个人理解:ok第四次在for循环踩坑,这次不是循环错误,而是条件写错了我寻思着除二就直接除了,忘了要重新进行赋值,救命太笨了。
数组去重
要求:去掉数组中的重复元素
思路:我个人没啥思路主要是在看这篇博客
链接:
link.
以上,第二阶段的学习总结。