学习总结

Scanner类实现基本数据输入的方法

Scanner 使用分隔符模式将其输入分解为标记,默认情况下该分隔符模式与空白匹配。然后可以使用不同的 next 方法将得到的标记转换为不同类型的值。

  • 输入一个int型的值
  1. import java.util.Scanner;
  2. public class text{
  3. public statuc void main(String[] args){
  4. Scanner in=new Scanner(System.in);
  5. int a=in.nextInt();
  6. }
  7. }
  • 读取一个单词
  1. import java.util.Scanner;
  2. public class text{
  3. public static void main(String[] args){
  4. Scanner.in=new Scanner(System.in);
  5. String stu="a";
  6. a=in.next();
  7. }
  8. }
  • 读取一行内容

    Scanner.in=new Scanner(System.in);

    nextLine();

.Random类和Math类的random()方法产生随机数的区别

  • Random类的随机方法是设定随机种子,(new Random().nextInt(10),这里的10就是随机种子,根据随机数的原理,相同随机种子在相同的随机次数中产生的随机数是一样的。

    使用Math.random()方法来产生一个随机数,这个产生的随机数是0-1之间的一个double类型,我们可以把他乘以一定的数,比如说乘以100,他就是个100以内的随机。

运行下列程序,结果是什么?查阅资料,分析为什么

  1. public class Test {
  2. public static void main(String args[]) {
  3. double a = 0.1;
  4. double b = 0.1;
  5. double c = 0.1;
  6. if((a + b + c) == 0.3){
  7. System.out.println("等于0.3");
  8. }else {
  9. System.out.println("不等于0.3");
  10. }
  11. }
  12. }



参照课本修改后的代码

  1. import java.math.BigDecimal;
  2. public class Test {
  3. public static void main(String args[]) {
  4. double a = 0.1;
  5. double b = 0.1;
  6. double c = 0.1;
  7. double sum=0;
  8. sum=Math.round(Math.add(a,c,b),1);
  9. if(sum==0.3){
  10. System.out.println("等于0.3");
  11. }
  12. else {
  13. System.out.println("不等于0.3");
  14. }
  15. }
  16. }
  17. class Math{
  18. public static double add(double a1,double a2,double a3){
  19. BigDecimal x1=new BigDecimal(a1);
  20. BigDecimal x2=new BigDecimal(a2);
  21. BigDecimal x3=new BigDecimal(a3);
  22. return x1.add(x2).add(x3).doubleValue();
  23. }
  24. public static double round(double d,int len){
  25. BigDecimal x1=new BigDecimal(d);
  26. BigDecimal x2=new BigDecimal(1);
  27. return x1.divide(x2,len,BigDecimal.ROUND_HALF_UP).doubleValue();
  28. }
  29. }

运行结果:

实验总结

看商品猜价格

  • 设计思路

    1 生成一个随机数代表价格

    2 输入猜到的价格

    3 根据输入的价格和真实价格的关系给出提示信息
  • 具体代码
  1. import java.util.Scanner;
  2. import java.util.Random;
  3. public class Guessprices {
  4. public static void main(String[] args){
  5. Scanner in=new Scanner(System.in);
  6. Random rand=new Random();
  7. int price=rand.nextInt(100);
  8. int guess,score,count=1;
  9. String a="yes";
  10. String str1="yes";
  11. System.out.println("有五次的猜测机会");
  12. while(a.equals(str1))/*判断是否运行猜价格的代码段*/{
  13. score=100;
  14. int i;
  15. for(i=5;i>0;i--){
  16. guess=in.nextInt();
  17. if(guess!=price){
  18. if(guess>price){
  19. System.out.println("猜测数比答案大了,请重新输入,剩余猜测机会:"+(i-1));
  20. count++;
  21. }
  22. else if(guess<price){
  23. System.out.println("猜测数比答案小了,请重新输入,剩余猜测机会:"+(i-1));
  24. count++;
  25. }
  26. score=score-20;
  27. }
  28. else if(guess==price){
  29. System.out.println("答案正确 结果为:"+price+"一共猜测了"+count+"次,得分为:"+score);
  30. }
  31. }
  32. if(i==0&&score==0){
  33. System.out.print("此次机会已用完,是否进行下一轮 ");
  34. a=in.next();
  35. if(a.equals(str1)==false){//不再继续并且没有猜出真实价格 给出真实价格
  36. System.out.println("答案为:"+price);
  37. }
  38. }
  39. else{
  40. ;
  41. }
  42. }
  43. }
  44. }
  • 总结:运用equals方法判断两个字符串是否相等 equals方法判断的是两个字符串的内容是否相等 而==判断的是两个字符串所在的物理内存地址是否一致。(a.equals(b);)

万年历

  • 设计思路

    目的:输入某年某月可以输出这个月的日历表

    输出日历表需要知道此月的天数(dayMonth)对应的星期

    天数:1.3.5.7.8.10.12这几个月永远都是31天

    4.6.9.11这几个月永远都是30天

    2月 当这一年是闰年是为29天 非闰年为28天

    因此 需要一个方法判断闰年 (isLeap)

    星期:因为知道1900.1.1是星期一 而星期是七个一循环,因此知道了从1900.1.1——xx年(xx-1)月的总天数(totaDays) 即可判断出此月的第一天为星期几

    总天数可分为整年的天数和不满足整年的天数 (days)

    整年的天数 闰年为366天,非闰年365天 设置循环相加即可

    非整年的天数 其中闰年2月为29天,非闰年2月28天;设置循环相加可解

    求出总天数后用总天数+1对7求余 余数是几即是星期几

    输出格式:输出星期日——星期六,然后输出对应的日期 用‘\t’对齐
  • 具体代码
  1. /*打印万年历,输入年份和月份,输出该月的日历,已知1900年1月1日是星期一,要求:
  2. (1)编写一个方法判断闰年
  3. public static boolean isLeap(int year)
  4. (2)编写一个方法判断某年某月有多少天
  5. public static int days(int year, int month)
  6. (3)编写一个方法计算某年某月之前距离1900年1月1日的总天数
  7. public static int totalDays(int year, int month)
  8. (3)编写一个输出某年某月日历的方法
  9. public static void printCalender(int year, int month)
  10. (4)在main方法中进行测试。
  11. 提示:判断星期几:
  12. 1+totalDays%7---值为1--7则为星期一----星期日
  13. */
  14. import java.util.Scanner;
  15. public class Canlender {
  16. public static void main(String[] args){
  17. Scanner in=new Scanner (System.in);
  18. int year=in.nextInt();
  19. int month=in.nextInt();
  20. System.out.printf("截止到此月的天数 %d \n", days(year,month));
  21. System.out.printf("整年的天数 %d",totalDays(year,month)-days(year,month));
  22. System.out.printf("一共的天数 %d \n", totalDays(year,month));
  23. printCalender(year, month);
  24. }
  25. public static boolean isLeap(int year){//判断是否为闰年 是闰年返回true
  26. if((year%4==0&&year%100!=0)||year%400==0){
  27. return true;
  28. }
  29. else{
  30. return false;
  31. }
  32. }
  33. public static int days(int year, int month){//求一年中截止到某月的天数 返回天数总和
  34. int sum=0;
  35. for(int i=1;i<month;i++){
  36. if(i==1||i==3||i==5||i==7||i==8||i==10||i==12){
  37. sum=sum+31;
  38. }
  39. else if(i==4||i==6||i==9||i==11){
  40. sum=sum+30;
  41. }
  42. else if(i==2){
  43. if((isLeap(year)==true)){
  44. sum=sum+29;
  45. }
  46. else{
  47. sum=sum+28;
  48. }
  49. }
  50. }
  51. return sum;
  52. }
  53. public static int totalDays(int year, int month){//求某年某月到1900年的所有天数和
  54. int sum=0,sum1=0;
  55. for(int i=year-1;i>=1900;i--){//如果大于1900 计算整年所包含的天数
  56. if(isLeap(i)==true){
  57. sum=sum+366;
  58. }
  59. else{
  60. sum=sum+365;
  61. }
  62. }
  63. sum1=sum+days(year,month);
  64. return sum1;
  65. }
  66. public static int dayMonth(int year,int month){//输出月的天数
  67. int daymonth = 0;
  68. if(month==1||month==3||month==5||month==7||month==8||month==10||month==12){
  69. daymonth=31;
  70. }
  71. else if(month==4||month==6||month==9||month==11){
  72. daymonth=30;
  73. }
  74. else if(month==2){
  75. if(isLeap(year)==true){
  76. daymonth=29;
  77. }
  78. else{
  79. daymonth=28;
  80. }
  81. }
  82. return daymonth;
  83. }
  84. public static void printCalender(int year, int month){//生成日历
  85. System.out.println("星期日\t星期一\t星期二\t星期三\t星期四\t星期五\t星期六\t");
  86. int day;
  87. int daymonth=dayMonth(year,month);//输出月的天数
  88. //day=(1+totalDays(year,month)%7)%7;
  89. day=(1+totalDays(year,month))%7;
  90. for(int i=0;i<day;i++){//星期1需要
  91. System.out.printf("\t");
  92. }
  93. for(int i=1;i<=daymonth;i++){
  94. System.out.printf("%d\t",i);
  95. //flag++;
  96. if((i+day)%7==0){
  97. System.out.printf("\n");
  98. }
  99. }
  100. }
  101. }
  • 总结 运用\t来进行对齐操作

评分系统

  • 设计思路

    五名选手 十名裁判 设置两个数组 一个存储最后的成绩a 一个存储裁判给出的成绩b

    输入成绩 进行排序 将排好序的数组中的值从第二个加到倒数第二个 以达到去掉最高分和最低分的目的

    求和 算出平均数赋给数组a

    对数组a进行排序 输出数组a
  • 具体代码
  1. import java.util.Scanner;
  2. import java.util.Arrays;
  3. public class Output {
  4. public static void main(String[] args){
  5. Scanner in=new Scanner(System.in);
  6. int[] b;
  7. float[] a;
  8. a=new float[5];
  9. b=new int[10];
  10. for(int i=0;i<5;i++){
  11. System.out.println("输入第 "+(i+1)+"位的成绩");
  12. for(int j=0;j<10;j++){
  13. b[j]=in.nextInt();
  14. }
  15. Arrays.sort(b);//升序排列
  16. a[i]=average(b);
  17. }
  18. Arrays.sort(a);
  19. for(int j=4;j>=0;j--){
  20. System.out.printf("%.2f ",a[j]);
  21. }
  22. }
  23. public static float average(int[] score){//计算平均值
  24. int sum=0;
  25. for(int k=1;k<9;k++){//去掉最高值和最低值进行求和
  26. sum=score[k]+sum;
  27. }
  28. return (sum/8.00f);
  29. }
  30. }
  • 总结 对数组进行排序的调用方法 Arrays.sort(a);

代码托管



《Java技术》第一次作业——Java语言基础的更多相关文章

  1. Java技术 第一次作业

    (一)学习总结 1.在java中通过Scanner类完成控制台的输入,查阅JDK帮助文档,Scanner类实现基本数据输入的方法是什么? 代码开头加一句 Import java.util; 构建Sca ...

  2. 2017《java技术预备作业》

    2017<java技术预备作业> 1.阅读邹欣老师的博客,谈谈你期望的师生关系是什么样的? 亦师亦友,很多人这样说,确实,倘若师生之间如果中间有些隔阂最终吃亏的始终是学生.我认为师生之间应 ...

  3. 1903021121-刘明伟-java十一周作业-java面向对象编程

    项目 内容 课程班级博客链接 19级信计班(本) 作业要求链接 第十一周作业 博客名称 1903021121-刘明伟-java十一周作业-java面向对象 要求 每道题要有题目,代码(使用插入代码,不 ...

  4. 2008技术内幕:T-SQL语言基础

    2008技术内幕:T-SQL语言基础 单表查询摘记 这里的摘抄来自<Microsoft SQL Server 2008技术内幕:T-SQL语言基础>,书中用到的案例数据库是这个 TSQLF ...

  5. 2008技术内幕:T-SQL语言基础 单表查询摘记

    这里的摘抄来自<Microsoft SQL Server 2008技术内幕:T-SQL语言基础>,书中用到的案例数据库是这个 TSQLFundamentals2008 ,官网给出的连接是这 ...

  6. 2008技术内幕:T-SQL语言基础 联接查询摘记

    续 2008技术内幕:T-SQL语言基础 单表查询摘记 第三章 联接查询 Microsoft SQL Server 2008 支持四种表运算符 join(ANSI标准).apply(T-SQL扩展). ...

  7. Java第一次作业——Java语言基础

    <Java技术>第一次作业 学习总结 1.Scanner类实现基本数据输入方法 Scanner input=new Scanner(System.in); int num = input. ...

  8. (转)如何学习Java技术?谈Java学习之路

    51CTO编者注:这篇文章已经是有数年“网龄”的老文,不过在今天看来仍然经典.如何学习Java?本篇文章可以说也是面对编程初学者的一篇指导文章,其中对于如何学习Java的步骤的介绍,很多也适用于开发领 ...

  9. 2017《JAVA技术预备作业》 1502 陈明宇

    1.阅读邹欣老师的博客,谈谈你期望的师生关系是什么样的? 我期望的师生关系应该是亦师亦友的关系,美丽的校园是我们学生居住生活最久的地方而老师则是和我们接触最为密切的人.在课堂上,老师是辛勤的园丁,向我 ...

随机推荐

  1. XML之自动生成类,添加,修改,删除类的属性

    1. class ClassHelperDemo { public static void Main() { #region 演示一:动态生成类. //生成一个类t. Type t = ClassHe ...

  2. 【深度学习】深入理解ReLU(Rectifie Linear Units)激活函数

    论文参考:Deep Sparse Rectifier Neural Networks (很有趣的一篇paper) Part 0:传统激活函数.脑神经元激活频率研究.稀疏激活性 0.1  一般激活函数有 ...

  3. php的开发的apache的配置及伪静态的应用

    1.Apache之所以能够解析php代码是游览器首先发送数据到模版页面,然后模版页提交数据到php页面,然后php代码经过Apache解析过后生成结果的,所以是 在Apache的配置文件中是可以看到开 ...

  4. Python基础学习篇章三

    一. Python对象类型 1. 对象是Python最基本的概念,一个Python程序可以分解为模块.语句.表达式.和对象.它们的关系如下:(1)程序由模块构成 (2)模块包含语句 (3)语句包含表达 ...

  5. C# HttpClient设置cookies的两种办法 (转发)

    一般有两种办法 第一种handler.UseCookies=true(默认为true),默认的会自己带上cookies,例如 var handler = new HttpClientHandler() ...

  6. LDAP的用户需求

    使用LDAP(ApacheDS)构建统一认证服务(SSO单点登录)   构建团队协作的体系,需要涉及很多个系统,如SVN.Jenkins.Trac.Nexus等,而一般而言每个系统均有其用户体系,当我 ...

  7. (java基础)Java输入输出流及文件相关

    字节流: 所有的字节输入输出都继承自InputStream和OutputStream,通常用于读取二进制数据,最基本单位为单个字节,如图像和声音.默认不使用缓冲区. FileInputStream和F ...

  8. C# 后台构造json数据

    前后台传值一般情况下,都会用到json类型的数据,比较常见,但是每次用到的时候去网上找比较麻烦,所以自己记录一下,下次直接用. 构造的json串格式,如下: [{","name&q ...

  9. 表单提交中的input、button、submit的区别

    1.input[type=submit] 我们直接来看例子: 代码如下: <form> <input name="name"> <input type ...

  10. 在Linux的Terminal中显示文本文件特定行的内容

    假设要操纵的文本文件的文件名是 textFile现在想做的事情是在不以编辑模式打开文件的情况下在终端直接提取并输出指定文本文件的指定行的内容 在终端提取指定文本文件的指定行的内容 Tool Comma ...