挑战用豆包教我学Java01天

news2025/5/12 2:38:23

今天是豆包教我学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.coloradmin.cn/o/2372040.html

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

相关文章

LeapVAD:通过认知感知和 Dual-Process 思维实现自动驾驶飞跃——论文阅读

《LeapVAD: A Leap in Autonomous Driving via Cognitive Perception and Dual-Process Thinking》2025年1月发表&#xff0c;来自浙江大学、上海AI实验室、慕尼黑工大、同济大学和中科大的论文。 尽管自动驾驶技术取得了显著进步&#xff0c;但由于推理能力有限&#xff0c;数…

windows 部署 Kafka3.x KRaft 模式 不依赖 ZooKeeper

1.下载 https://archive.apache.org/dist/kafka/3.9.0/kafka_2.12-3.9.0.tgz2.配置使用 KRaft 模式 2.1 修改 Kafka 的配置文件 cd D:\data\bigdata\kafka_2.12-3.9.0\config\kraft 修改 server.properties # 设置 Kafka 数据日志存储目录 log.dirsD:\\data\\bigdata\\kaf…

Xilinx FPGA | 管脚约束 / 时序约束 / 问题解析

注&#xff1a;本文为 “Xilinx FPGA | 管脚约束 / 时序约束 / 问题解析” 相关文章合辑。 略作重排&#xff0c;未整理去重。 如有内容异常&#xff0c;请看原文。 Xilinx FPGA 管脚 XDC 约束之&#xff1a;物理约束 FPGA技术实战 于 2020-02-04 17:14:53 发布 说明&#x…

Python-JsonRPC

Python-JsonRPC 使用Python学习JsonRPC数据交互 1-核心知识点 1&#xff09;什么是JsonRPC&#xff0c;这种协议是如何工作的&#xff1f;->使用请求进行验证2&#xff09;JsonRPC可以使用Postman进行验证吗&#xff1f;->可以使用POSTMAN进行调用&#xff08;使用HTTP请…

Redis从入门到实战——实战篇(下)

四、达人探店 1. 发布探店笔记 探店笔记类似于点评网站的评价&#xff0c;往往是图文结合。对应的表有两个&#xff1a; tb_blog&#xff1a;探店笔记表&#xff0c;包含笔记中的标题、文字、图片等tb_blog_comments&#xff1a;其他用户对探店笔记的评价 步骤①&#xff1…

面试问题(连载。。。。)

flexbox 和 crid 的区别 1. 布局维度与核心特性 Flexbox&#xff08;弹性盒子&#xff09; 一维布局&#xff1a;专注于行或列的线性排列&#xff0c;适合单方向&#xff08;水平或垂直&#xff09;的布局需求。动态分配空间&#xff1a;通过 flex-grow、flex-shrink 和 flex…

OpenCv实战笔记(1)在win11搭建opencv4.11.1 + qt5.15.2 + vs2019_x64开发环境

一. 准备工作 Visual Studio 2019&#xff08;安装时勾选 C 桌面开发 和 Windows 10 SDK&#xff09; CMake 3.20&#xff08;官网下载&#xff09; Qt 5.15.2&#xff08;下载 Qt Online Installer&#xff09;安装时勾选 MSVC 2019 64-bit 组件。 opencv 4.11.1 源码下载 git…

全局网络:重构数字时代的连接范式

从局部到全局 —— 网络架构的范式革命 在全球化与数字化深度融合的今天&#xff0c;传统网络架构的 “碎片化” 问题日益凸显&#xff1a;跨地域数据流通低效、设备互联孤岛化、安全策略难以统一。 全局网络作为一种突破地域与技术边界的新型网络架构&#xff0c;正成为企业…

C++ Primer (第五版)-第十四章重载运算与类型转换

文章目录 一、基本概念可以被重载某些运算符不应被重载尽量明智使用运算符重载赋值和复合赋值运算符选择作为成员或者非成员 输入和输出运算符输入运算符尽量减少格式化操作输入输出运算符必须是非成员函数 重载输入运算符>>输入时的错误标示错误 算数和关系运算符相等运…

鸿蒙开发——5.ArkUI @Builder装饰器:打造高效可复用的UI组件

鸿蒙开发——5.ArkUI Builder装饰器&#xff1a;打造高效可复用的UI组件 ArkUI Builder装饰器&#xff1a;打造高效可复用的UI组件一、Builder装饰器是什么&#xff1f;二、两种构建函数类型1. 私有自定义构建函数2. 全局自定义构建函数 三、参数传递核心规则1. 按值传递&#…

PyTorchVideo实战:从零开始构建高效视频分类模型

视频理解作为机器学习的核心领域&#xff0c;为动作识别、视频摘要和监控等应用提供了技术基础。本教程将详细介绍如何利用PyTorchVideo和PyTorch Lightning两个强大框架&#xff0c;构建基于Kinetics数据集训练的3D ResNet模型&#xff0c;实现高效的视频分类流程。 PyTorch…

SEMI E40-0200 STANDARD FOR PROCESSING MANAGEMENT(加工管理标准)-(二)

8 行为规范 8.1 本章定义监督实体&#xff08;Supervisor&#xff09;与加工资源&#xff08;Processing Resource&#xff09;为实现物料加工所需的高层级通信逻辑&#xff0c;不涉及具体消息细节&#xff08;详见第10章消息服务&#xff09;。 8.2 加工任务通信 8.2.1 加工…

根据窗口大小自动调整页面缩放比例,并保持居中显示

vue 项目 直接上代码 图片u1.png 是个背景图片 图片u2.png 是个遮罩 <template><div id"app"><div class"viewBox"><divclass"screen":style"{ transform: translate(-50%,-50%…

Android SDK 国内镜像及配置方法(2025最新,包好使!)

2025最新android sdk下载配置 1、首先你需要有android sdk manager2、 直接上教程修改hosts文件配置域名映射即可(不用FQ)2.1 获取ping dl.google.com域名ip地址2.2 配置hosts文件域名映射2.3 可以随意下载你需要的sdk3、 总结:走过弯路,踩过坑!!!大家就不要踩了!避坑1…

【Python开源】深度解析:一款高效音频封面批量删除工具的设计与实现

&#x1f3b5; 【Python开源】深度解析&#xff1a;一款高效音频封面批量删除工具的设计与实现 &#x1f308; 个人主页&#xff1a;创客白泽 - CSDN博客 &#x1f525; 系列专栏&#xff1a;&#x1f40d;《Python开源项目实战》 &#x1f4a1; 热爱不止于代码&#xff0c;热情…

OpenStack Yoga版安装笔记(26)实例元数据笔记

一、实例元数据概述 1.1 元数据 &#xff08;官方文档&#xff1a;Metadata — nova 25.2.2.dev5 documentation&#xff09; Nova 通过一种叫做元数据&#xff08;metadata&#xff09;的机制向其启动的实例提供配置信息。这些机制通常通过诸如 cloud-init 这样的初始化软件…

【Linux】swap交换分区管理

目录 一、Swap 交换分区的功能 二、swap 交换分区的典型大小的设置 2.1 查看交换分区的大小 2.1.1 free 2.1.2 cat /proc/swaps 或 swapon -s 2.1.3 top 三、使用交换分区的整体流程 3.1 案例一 3.2 案例二 一、Swap 交换分区的功能 计算机运行一个程序首先会将外存&am…

VirtualBox 创建虚拟机并安装 Ubuntu 系统详细指南

VirtualBox 创建虚拟机并安装 Ubuntu 系统详细指南 一、准备工作1. 下载 Ubuntu 镜像2. 安装 VirtualBox二、创建虚拟机1. 新建虚拟机2. 分配内存3. 创建虚拟硬盘三、配置虚拟机1. 加载 Ubuntu 镜像2. 调整处理器核心数(可选)3. 启用 3D 加速(图形优化)四、安装 Ubuntu 系统…

触想CX-3588工控主板应用于移动AI数字人,赋能新型智能交互

一、行业发展背景 随着AI智能、自主导航和透明屏显示等技术的不断进步&#xff0c;以及用户对“拟人化”、“沉浸式”交互体验的期待&#xff0c;一种新型交互终端——“移动AI数字人”正在加速实现规模化商用。 各大展厅展馆、零售导购、教学政务甚至家庭场景中&#xff0c;移…

【深入浅出MySQL】之数据类型介绍

【深入浅出MySQL】之数据类型介绍 MySQL中常见的数据类型一览为什么需要如此多的数据类型数值类型BIT&#xff08;M&#xff09;类型INT类型TINYINT类型BIGINT类型浮点数类型float类型DECIMAL(M,D)类型区别总结 字符串类型CHAR类型VARCHAR(M)类型 日期和时间类型enum和set类型 …