Java笔记04:
自学笔记1
内容:
- Java数组(基于黑马程序员视频)
- 编程练习
- 编程时遇到的问题及解决方法
1.Java数组
花了一天时间看完黑马教程关于数组的视频,本来打算继续用菜鸟教程的C 语言经典100例练习,但是好像没看到专门的题,就暂时卡住了,再加上我快开学了,想着多玩几天,就一直搁置着,打算到学校再写,课好难,为了期末不挂科,学校的课程优先,有空的时候再来续写
2.编程练习
2.1 输入某年某月某日,判断这一天是这一年的第几天?
这题是上篇文章的2.4,原理没什么区别,用数组可以少打代码
代码如下
//输入某年某月某日,判断这一天是这一年的第几天?
import java.util.Scanner;
public class CDemo4{
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
System.out.println("请输入分别输入要查询的年月日:");
System.out.println("请输入要查询的年份:");
boolean flag=false;
int year=sc.nextInt();
System.out.println("请输入要查询的月份:");
int mouth=sc.nextInt();
System.out.println("请输入要查询的日期:");
int day=sc.nextInt();
int sum =0,endday=0;
if((year % 4==0 && year % 100 !=0 )||(year % 400 == 0)){//判断闰年
flag=true;
}
int [] moon=new int [] {31,28,31,30,31,30,31,31,30,31,30,31};//口诀:一三五七八十腊(12月),三十一天永不差;四六九冬(11月)三十日;平年二月二十八,闰年二月把一加
for (int i=0;i<mouth-1;i++){
sum+=moon[i];
}
if (flag && mouth>2){//如果是闰年且输入的月份>2,那么在此基础上+1,反之则正常累加
endday=sum+day+1;
}else{
endday=sum+day;
}
System.out.println("是第 "+endday+" 天");
}
}
2.2 一维数组的动态和(题目来源-力扣-新手村-第一题:一维数组的动态和)
1.从示例可以看出来,nums的元素并不能确定,用户随意输入,那就不能直接定义长度
2.从公式和示例可以知道,计算方式就是元素累加,新生成的第二个元素是第一个元素+原来的第二个元素,以此类推,第一个元素没地方加,保持不变,如果从第一个元素开始遍历的话,会让程序复杂,那索性从第二个元素开始计算,省的多打
3.输出也是数组,那就需要定义一个相同类型长度的数组
4.那基本思路就是:先定义一个数组sum,用来存放新生成的元素值,把第一个元素赋值,从第二个元素开始遍历,累加,最后输出数组sum即可
class Solution {
public int[] runningSum(int[] nums) {
int [] sum=new int [nums.length];
sum[0]=nums[0];
for (int i=1;i<nums.length;i++){
sum[i]=sum[i-1]+nums[i];
}
return sum;
}
}
我还发现有题目解析和视频讲解,好贴心
2.3 Fizz Buzz (题目来源-力扣-新手村-第三题:Fizz Buzz)
1.首先用户输入n,我需要从1到n遍历,如果是3的倍数,就是Fizz
,如果是5的倍数就是Buzz
,如果是3和5的倍数,那么显示FizzBuzz
2.将遍历判断之后的结果存放到字符串数组中,输出即可
虽然这题原理就这样,不过,我还是没成功
不过做这道题的初衷是为了练习数组,自己新建文件重新编译运行,查看结果,数据上没毛病,代码就不贴了,这边建议直接点击正确答案,学习。
3.编程时遇到的问题及解决方法
1.做2.3的时候,不知道int怎么转String型,然后就百度搜到了Java中数字转成字符串的方法,我选了第三种方法