挑战用豆包教我学Java01天

今天是豆包教我学Java的第一天,废话不多说直接开始。

1.每日题目:

基础语法与数据类型

  1. 题目:编写一个 Java 程序,从控制台读取两个整数,然后计算它们的和、差、积、商,并输出结果。
  2. 题目:编写一个程序,定义一个字符变量并赋值,然后将该字符转换为对应的 ASCII 码并输出。
  3. 题目:编写一个程序,声明一个布尔变量,根据不同的条件给它赋值,然后输出布尔变量的值。

2.题目一:编写一个 Java 程序,从控制台读取两个整数,然后计算它们的和、差、积、商,并输出结果。

这个题目开始我不知道怎么输入值,于是问豆包:

问:怎么输入值?

答:

import java.util.Scanner;public class ScannerInputExample {public static void main(String[] args) {// 创建 Scanner 对象Scanner scanner = new Scanner(System.in);// 读取整数System.out.print("请输入一个整数: ");int num = scanner.nextInt();System.out.println("你输入的整数是: " + num);// 消耗掉 nextInt() 遗留的换行符scanner.nextLine();// 读取字符串System.out.print("请输入一个字符串: ");String str = scanner.nextLine();System.out.println("你输入的字符串是: " + str);// 读取浮点数System.out.print("请输入一个浮点数: ");double d = scanner.nextDouble();System.out.println("你输入的浮点数是: " + d);// 关闭 Scanner 对象scanner.close();}
}    
  1. 导入 Scanner 类:在代码开头,使用 import java.util.Scanner; 语句导入 Scanner 类。
  2. 创建 Scanner 对象:通过 Scanner scanner = new Scanner(System.in); 创建一个 Scanner 对象,用于从标准输入读取数据。
  3. 读取不同类型的数据:
    • nextInt():用于读取整数。
    • nextLine():用于读取一行字符串。
    • nextDouble():用于读取浮点数。
    •  scanner.next().charAt(0):用于读取字符
  4. 关闭 Scanner 对象:使用完 Scanner 对象后,调用 scanner.close(); 方法关闭它,以释放资源。

问:String[] args是干什么的

答:

  1. String[] args 是一个字符串数组,它用于接收在命令行中运行 Java 程序时传递给程序的参数。当你在命令行中执行 Java 程序时,可以在程序名后面添加一系列由空格分隔的参数,这些参数会被存储在 args 数组中。

问:Scanner scanner = new Scanner(System.in);是干什么的

答:

        这行代码的主要功能是创建一个 Scanner 对象,这个对象能够从标准输入流里读取数据。在 Java 中,标准输入流一般指的就是键盘输入,所以借助这个 Scanner 对象,程序就可以获取用户通过键盘输入的信息。实则是创建了一个名字为scanner的类。

问:求a-b的绝对值怎么求

答:

Math.abs(a - b);

 问:怎么输出换行

System.out.println("a - b 的绝对值是:");将print换成println。

问:将整数a转化为double

答:

   强制转换:

   double b = (double) a;

初步完成代码:

import java.util.Scanner;
public class Main{public static void main(String[] args){Scanner scanner=new Scanner(System.in);System.out.println("请输入数值a,b");int a=scanner.nextInt();int b=scanner.nextInt();System.out.print("两数之和为:");System.out.println(a+b);//System.out.print(result);System.out.print("两数之差为:");System.out.println(a-b);System.out.print("两数之积为:");System.out.println(a*b);System.out.print("两数之商为:");System.out.print((double)a/b);}
}

我发给豆包看,他给出了一些意见:
 

优点

  1. 功能实现:代码准确地实现了基本的数学运算功能,通过 Scanner 类获取用户输入的两个整数,然后分别计算并输出它们的和、差、积、商,逻辑清晰,符合题目的要求。
  2. 输入处理:使用 Scanner 类来处理用户的输入,这是 Java 中常用的获取用户输入的方式,方便且易用。
  3. 商的处理:在计算两数之商时,使用 (double)a/b 进行强制类型转换,确保计算结果为浮点数,避免了整数除法导致的精度丢失问题。

可优化之处

  1. 异常处理:代码没有对用户输入进行异常处理。如果用户输入的不是有效的整数,程序会抛出 InputMismatchException 异常并终止。可以添加异常处理机制,增强程序的健壮性。
  2. 除数为零的情况:在计算两数之商时,没有考虑除数 b 为零的情况。当 b 为零时,会抛出 ArithmeticException 异常。应该在计算商之前进行判断,避免出现这种异常。
  3. 代码结构:可以将计算和输出的逻辑封装成方法,提高代码的可读性和可维护性。
  4. 资源管理:在使用完 Scanner 对象后,应该调用 scanner.close() 方法关闭它,以释放系统资源。

按照他给的优化我们将代码继续优化:

最终代码:

  import java.util.Scanner;import java.util.InputMismatchException;
public class Main{public static void main(String[] args){Scanner scanner=new Scanner(System.in);int a=0;int b=0;try {System.out.println("请输入数值a,b");a = scanner.nextInt();b = scanner.nextInt();System.out.print("两数之和为:");System.out.println(a+b);//System.out.print(result);System.out.print("两数之差为:");System.out.println(a-b);System.out.print("两数之积为:");System.out.println(a*b);System.out.print("两数之商为:");System.out.print((double)a/b);}catch(InputMismatchException e) {//处理异常System.out.println("输入无效,请输入有效的整数");}finally{scanner.close();}}
}

这样我将代码异常处理和除数为0的情况都解决了,还使用了调用 scanner.close() 关闭结尾。

3.题目二:编写一个程序,定义一个字符变量并赋值,然后将该字符转换为对应的 ASCII 码并输出。

问:字符怎么输入?

答:

这个题目写的时候有一个地方报错:

 a = scanner.nextInt();

原因是字符的输入要变成:
 a=scanner.next().charAt(0);

接着我写出了

初始代码:

import java.util.Scanner;
import java.util.InputMismatchException;
public class Main
{public static void main(String[] args){Scanner scanner=new Scanner(System.in);char a;try {System.out.println("请输入字符:");a=scanner.next().charAt(0);System.out.println("转换为阿斯克码值为:");System.out.print(a-'0');}catch(InputMismatchException e) {System.out.println("输入有误,请重新输入!");}finally {scanner.close();}}
}

豆包评价:
 

优点

  1. 功能实现思路正确:整体思路是正确的,使用 Scanner 类从用户输入读取字符,并且尝试将其转换为 ASCII 码值输出。
  2. 异常处理:使用了 try-catch 块来捕获 InputMismatchException 异常,当用户输入不匹配时会给出相应的错误提示,增强了程序的健壮性。
  3. 资源管理:在 finally 块中调用了 scanner.close() 方法来关闭 Scanner 对象,避免了资源泄漏。

存在的问题

  1. 转换逻辑错误:代码中使用 a - '0' 来计算 ASCII 码值,这是错误的。'0' 代表字符 0 的 ASCII 码值,当你用字符 a 减去 '0' 时,得到的并不是字符 a 的 ASCII 码值。实际上,在 Java 中,char 类型可以直接转换为 int 类型,从而得到其对应的 ASCII 码值,正确的做法是使用 (int)a
  2. 拼写错误:在输出提示信息时,“阿斯克码” 存在拼写错误,正确的表述是 “ASCII 码”。
  3. 输出换行问题System.out.print(a - '0'); 使用的是 print 方法,该方法不会自动换行,如果想要输出结果后换行,建议使用 println 方法。

改进:

我把a-'0'改成了(int)a;

最终代码:
 

import java.util.Scanner;
import java.util.InputMismatchException;
public class Main
{public static void main(String[] args){Scanner scanner=new Scanner(System.in);char a;try {System.out.println("请输入字符:");a=scanner.next().charAt(0);System.out.println("转换为阿斯克码值为:");System.out.println((int)a);}catch(InputMismatchException e) {System.out.println("输入有误,请重新输入!");}finally {scanner.close();}}
}

4.题目三:编写一个程序,声明一个布尔变量,根据不同的条件给它赋值,然后输出布尔变量的值。

初始代码:
 

//题目:编写一个程序,声明一个布尔变量,根据不同的条件给它赋值,然后输出布尔变量的值。
import java.util.Scanner;
import java.util.InputMismatchException;
public class Main
{public static void main(String[] args){Scanner asd=new Scanner(System.in);boolean a=true;int b;int c;try{System.out.println("请输入两个数:");b=asd.nextInt();c=asd.nextInt();int d=b-c;if(d>0){a=true;}else if(d<0){a=false;}System.out.println(a);}catch(InputMismatchException e){System.out.println("输入有误,请重新输入!");}finally{asd.close();}}
}

可优化之处

  1. 变量命名:变量名 asd 没有明确的含义,不利于代码的阅读和维护。建议使用更具描述性的变量名,如 scanner
  2. 初始赋值冗余:布尔变量 a 初始赋值为 true,但后续在 if - else if 语句中会重新赋值,所以初始赋值可以省略。
  3. else if 可简化:由于 d 只有大于 0、小于 0 和等于 0 三种情况,这里可以将 else if 简化为 else
  4. 差值为 0 的情况:代码中没有处理 d 等于 0 的情况,可以根据需求添加相应的逻辑。

最终代码:
 

import java.util.Scanner;
import java.util.InputMismatchException;
public class Main
{public static void main(String[] args){Scanner asd=new Scanner(System.in);boolean a;int b;int c;try{System.out.println("请输入两个数:");b=asd.nextInt();c=asd.nextInt();int d=b-c;if(d>=0){a=true;}else{a=false;}System.out.println(a);}catch(InputMismatchException e){System.out.println("输入有误,请重新输入!");}finally{asd.close();}}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/78826.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

文章记单词 | 第67篇(六级)

一&#xff0c;单词释义 cylinder&#xff1a;英 [ˈsɪlɪndə(r)] 美 [ˈsɪlɪndər] &#xff0c;名词&#xff0c;意为 “圆筒&#xff1b;圆柱体&#xff1b;汽缸&#xff1b;&#xff08;有特定用途的&#xff09;圆筒形物品”。fool&#xff1a;英 [fuːl] 美 [fuːl]…

Make:独立创造者手册——从0到1的商业自由之路

目录 如何获得创业想法 • 解决你自己的问题 • 从微观细分市场起步 • 从问题出发&#xff0c;而非解决方案 • 记录与验证想法 如何构建产品 • 快速构建最小化产品 • 对抗完美主义 • 自行开发 vs. 外包 • 学习基础编程的必要性 案例与洞见 • Levelsio的70个项目与5%成…

spark基本介绍

一、Spark概述 Spark是一种基于内存的快速、通用、可拓展的大数据分析计算引擎。 Hadoop是一个分布式系统结构的基础架构。 二、Spark与Hadoop相比较的优势&#xff1a; 1. 处理速度&#xff1a;Hadoop&#xff1a;数据处理速度相对较慢 Spark&#xff1a;速度比Hadoop快很…

Pdf转Word案例(java)

Pdf转Word案例&#xff08;java&#xff09; 需要导入aspose-pdf.jar 需要先手动下载jar包到本地&#xff0c;然后通过systemPath在pom文件中引入。 下载地址&#xff1a;https://releases.aspose.com/java/repo/com/aspose/aspose-pdf/25.4/ <dependency><groupId&…

探索 C++ 语言标准演进:从 C++23 到 C++26 的飞跃

引言 C 作为一门历史悠久且广泛应用的编程语言&#xff0c;其每一次标准的演进都备受开发者关注。从早期的 C98 到如今的 C23&#xff0c;再到令人期待的 C26&#xff0c;每一个版本都为开发者带来了新的特性和改进&#xff0c;推动着软件开发的不断进步。本文将深入探讨 C23 …

如何有效防御服务器DDoS攻击

分布式拒绝服务&#xff08;DDoS&#xff09;攻击通过大量恶意流量淹没服务器资源&#xff0c;导致服务瘫痪。本文将提供一套结合代码实现的主动防御方案&#xff0c;涵盖流量监控、自动化拦截和基础设施优化。 1. 实时流量监控与告警 目标&#xff1a;检测异常流量并触发告警…

【Bootstrap V4系列】学习入门教程之 组件-折叠(Collapse)

Bootstrap V4系列 学习入门教程之 组件-折叠&#xff08;Collapse&#xff09; 折叠&#xff08;Collapse&#xff09;How it works一、Example二、Horizontal 水平的三、Multiple targets 多个目标四、Accordion example 手风琴示例 折叠&#xff08;Collapse&#xff09; 通…

C24-数组

数组的引入:方便对同一类型的数据进行管理(一个班级里的45个同学、一个篮子里的12个苹果)数组的定义: 数据类型 数组名[常量表达式(也就是元素的个数)];int a[10]; //这里定义了一个能存放10个元素的整形数组数组初始化 完全初始化 int arr[3]{5,6,8};部分初始化 int arr[10]{…

手持小风扇方案解说---【其利天下技术】

春去夏来&#xff0c;酷暑时节&#xff0c;小风扇成为外出必备的解暑工具&#xff0c;近年来&#xff0c;随着无刷电机的成本急剧下降&#xff0c;小风扇也逐步从有刷变无刷化了。 数量最大的如一箱无刷马达&#xff0c;其次三相低压无刷电机也大量被一些中高端风扇大量采用。…

C++函数栈帧详解

函数栈帧的创建和销毁 在不同的编译器下&#xff0c;函数调用过程中栈帧的创建是略有差异的&#xff0c;具体取决于编译器的实现&#xff01; 且需要注意的是&#xff0c;越高级的编译器越不容易观察到函数栈帧的内部的实现&#xff1b; 关于函数栈帧的维护这里我们要重点介…

CPU-GPU-NPU-TPU 概念

1.CPU 中央处理器&#xff08;Central Processing Unit&#xff0c;简称CPU&#xff09;作为计算机系统的运算和控制核心&#xff0c;是信息处理、程序运行的最终执行单元。CPU自产生以来&#xff0c;在逻辑结构、运行效率以及功能外延上取得了巨大发展。 2.GPU GPU&#xff0…

Java学习手册:ORM 框架性能优化

一、优化实体类设计 减少实体类属性 &#xff1a;仅保留必要的字段&#xff0c;避免持久化过多数据。例如&#xff0c;对于一个用户实体类&#xff0c;如果某些信息&#xff08;如详细地址&#xff09;不是经常使用&#xff0c;可以将其拆分到单独的实体类中。使用合适的数据类…

XMP-Toolkit-SDK 编译与示例程序

一、前言 最近在调研图片的元数据读写方案&#xff0c;需要了解 XMP 空间以及如何在 XMP 空间中读写元数据&#xff0c;本文做一个相关内容的记录。 XMP-Toolkit-SDK 以及 XMP标准简介 XMP-Toolkit-SDK 是 Adobe 提供的一套开源软件开发工具包&#xff08;SDK&#xff09;&a…

计算机硬件(南桥):主板芯片组FCH和PCH的区别

在计算机主板设计中&#xff0c;FCH&#xff08;Fusion Controller Hub&#xff09;和PCH&#xff08;Platform Controller Hub&#xff09;分别是AMD和Intel对主板芯片组中“南桥”&#xff08;Southbridge&#xff09;部分的命名。尽管两者功能相似&#xff0c;但受不同厂商架…

数据库系统概论-基础理论

数据库系统概述&#xff1a; 1、记录&#xff1a;计算机中表示和存储数据的一种格式或方法。 2、数据库&#xff08;DataBase, DB&#xff09;&#xff1a;数据库是长期储存在计算机内、有组织、可共享的大量数据集合。可为各种用户共享。 3、数据库管理系统&#xff08;Dat…

在 R 中,清除包含 NA(缺失值)的数据

在 R 中&#xff0c;清除包含 NA&#xff08;缺失值&#xff09;的数据可以通过多种方式实现&#xff0c;具体取决于你希望如何处理这些缺失值。以下是几种常见的方法&#xff0c;包括删除包含 NA 的行、删除包含 NA 的列&#xff0c;或者用特定值填充 NA。 1. 删除包含 NA 的…

晶体布局布线

1Clock时钟电路 时钟电路就是类似像时钟一样准确运动的震荡电路&#xff0c;任何工作都是依照时间顺序&#xff0c;那么产生这个时间的电路就是时钟电路&#xff0c;时钟电路一般是由晶体振荡器、晶振、控制芯片以及匹配电容组成 2.时钟电路布局 晶体电路布局需要优先考虑&…

机器学习之嵌入(Embeddings):从理论到实践

机器学习之嵌入(Embeddings)&#xff1a;从理论到实践 摘要 本文深入探讨了机器学习中嵌入(Embeddings)的概念和应用。通过具体的实例和可视化展示&#xff0c;我们将了解嵌入如何将高维数据转换为低维表示&#xff0c;以及这种转换在推荐系统、自然语言处理等领域的实际应用…

Python初学者笔记第九期 -- (列表相关操作及列表编程练习题)

第17节课 列表相关操作 无论是内置函数、对象函数&#xff0c;用起来确实很方便&#xff0c;但是作为初学者&#xff0c;你必须懂得它们背后的运行逻辑&#xff01; 1 常规操作 &#xff08;1&#xff09;遍历 arr [1,2,3,4] # 以索引遍历:可以在遍历期间修改元素 for ind…

云计算与大数据进阶 | 25、可扩展系统构建

在进入这个进阶版系列之前&#xff0c;让我们先回顾一下云计算与大数据系统的基本设计原则&#xff0c;总结起来有如下几条&#xff1a; (1)基础架构&#xff1a;更多采用商品现货硬件&#xff08;如PC架构&#xff09;​&#xff0c;而很少使用定制化高端&#xff08;如小型主…