pta-7-6 学生类设计

题目要求:

设计一个类Student,并在Main类中生成Student类对象进行测试

1.对于Student类,设计私有属性name和age,并为每一个成员变量name和age设计其setXXX()和getXXX()方法,并对于setAge方法,如果age被赋值为<=6,则age值为7,其他为参数值。

2.对于Student类,设计无参构造方法,在构造方法中为age赋值为7,name赋值为“无名" 并添加语句System.out.println("无参构造方法");

3.设计方法public void display(),方法中显示该学生的姓名和年龄,显示格式为name:无名,age:8


Main类的main方法中,创建1个学生对象,然后调用display方法显示学生信息,接着通过键盘输入1个学生的姓名和年龄,调用display方法去显示学生信息。

输入格式:

在一行内输入学生的姓名和年龄

输出格式:

对每一组输入,输出学生的姓名和年龄。

输入样例:

在这里给出一组输入。例如:

tom 6
jerry 8

输出样例:

在这里给出相应的输出。例如:

无参构造方法
name:无名,age:7
name:tom,age:7
无参构造方法
name:无名,age:7
name:jerry,age:8

错误答案:

// 定义Student类
class Student {
    private String name; // 学生姓名
    private int age; // 学生年龄

    // 无参构造方法
    public Student() {
        this.name = "无名";
        this.age = 7;
        System.out.println("无参构造方法");
    }

    // name的setter方法
    public void setName(String name) {
        this.name = name;
    }

    // name的getter方法
    public String getName() {
        return name;
    }

    // age的setter方法
    public void setAge(int age) {
        if (age <= 6) {
            this.age = 7;
        } else {
            this.age = age;
        }
    }

    // age的getter方法
    public int getAge() {
        return age;
    }

    // 显示学生信息的方法
    public void display() {
        System.out.println("name:" + name + ",age:" + age);
    }
}

// Main测试类
public class Main {
    public static void main(String[] args) {
        Student student1 = new Student(); // 创建学生对象
        student1.display(); // 显示学生信息

        java.util.Scanner scanner = new java.util.Scanner(System.in);
        while (scanner.hasNextLine()) {
            String[] input = scanner.nextLine().split(" ");
            String name = input[0];
            int age = Integer.parseInt(input[1]);
            student1.setName(name);
            student1.setAge(age);
            student1.display(); // 显示学生信息
        }
        scanner.close();
    }
}

错误显示:

解析:非零显示意思是在返回时就遇见了bug,可能是有什么判断有问题,我们这里的判断只有循环的判断,于是我们改成了这样:

import java.util.Scanner;
// 定义Student类
class Student {
    private String name; // 学生姓名
    private int age; // 学生年龄

    // 无参构造方法
    public Student() {
        this.name = "无名";
        this.age = 7;
        System.out.println("无参构造方法");
    }

    // name的setter方法
    public void setName(String name) {
        this.name = name;
    }

    // name的getter方法
    public String getName() {
        return name;
    }

    // age的setter方法
    public void setAge(int age) {
        if (age <= 6) {
            this.age = 7;
        } else {
            this.age = age;
        }
    }

    // age的getter方法
    public int getAge() {
        return age;
    }

    // 显示学生信息的方法
    public void display() {
        System.out.println("name:" + name + ",age:" + age);
    }
}

// Main测试类
public class Main {
    public static void main(String[] args) {
        Student student1 = new Student(); // 创建学生对象
        student1.display(); // 显示学生信息

        java.util.Scanner scanner = new java.util.Scanner(System.in);
        scanner.hasNextLine();
        String[] input = scanner.nextLine().split(" ");
        String name = input[0];
        int age = Integer.parseInt(input[1]);
        student1.setName(name);
        student1.setAge(age);
        student1.display(); // 显示学生信息
    }
}

结果还是报同样的错误。

既然这样,那有可能是我们的输入判断有问题,这里我们输入是用的第二类输入,就是在遇见了换行符才停止录入,然后我们直接录入一行字符串,然后再解析字符串的各个部分,这里是用空格来分隔,不过如果出现多个空格,像名字里有空格怎么办?就会显示错误

我们可以用一个输入试试:

jerry yiio 8

结果真的报错了:

所以更改一下输入。

正确答案:

import java.util.Scanner;
class Student{
   private String name;
   private  int age;
   
     public String getName(){
         return name;
    }
    public void setName(String name){
        this.name=name;
    }
    public int getAge(){
         return age;
    }
   public void setAge(int age){
       if(age<=6)  {this.age=7;}
           else this.age=age;   
    }
    Student(){
          age=7;
         name="无名";
        System.out.println("无参构造方法");
   }
    
   public  void display(){
        System.out.println("name:"+name+",age:"+age);
   } 
   
    
}
    public class Main{
        public static void main(String args[]){
            Student s1=new Student();
            s1.display();
             Scanner sc=new Scanner(System.in);
            String name=sc.next();
            int age=sc.nextInt();
            s1.setName(name);
            s1.setAge(age);
            s1.display();
        }
    }

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

GPT-SOVIT模型部署指南

一、模型介绍 强大的小样本语音转换和文本转语音 WebUI。 具有以下特征&#xff1a; 零样本 TTS&#xff1a; 输入 5 秒的声音样本并体验即时文本到语音的转换。少量样本 TTS&#xff1a; 仅使用 1 分钟的训练数据对模型进行微调&#xff0c;以提高语音相似度和真实感。跨语…

【Oracle数据库进阶】001.SQL基础查询_查询语句

课 程 推 荐我 的 个 人 主 页&#xff1a;&#x1f449;&#x1f449; 失心疯的个人主页 &#x1f448;&#x1f448;入 门 教 程 推 荐 &#xff1a;&#x1f449;&#x1f449; Python零基础入门教程合集 &#x1f448;&#x1f448;虚 拟 环 境 搭 建 &#xff1a;&#x1…

2023年五一杯数学建模C题双碳目标下低碳建筑研究求解全过程论文及程序

2023年五一杯数学建模 C题 双碳目标下低碳建筑研究 原题再现&#xff1a; “双碳”即碳达峰与碳中和的简称&#xff0c;我国力争2030年前实现碳达峰&#xff0c;2060年前实现碳中和。“双碳”战略倡导绿色、环保、低碳的生活方式。我国加快降低碳排放步伐&#xff0c;大力推进…

AUTOSAR_EXP_ARAComAPI的5章笔记(13)

☞返回总目录 5.4.7 事件&#xff08;Events&#xff09; 在骨架侧&#xff0c;服务实现负责通知事件的发生。如 5.4.2 RadarService Skeleton Class 所示&#xff0c;骨架为每个事件提供一个事件包装类的成员。骨架的事件包装类与代理的事件包装类看起来明显不同。 在骨架端…

[已解决]DockerTarBuilder永久解决镜像docker拉取异常问题

前阵子发现阿里云的docker加速镜像失效了&#xff08;甚至连nginx都拉取不了&#xff09;&#xff0c;重新换了并且加多了网络上比较常用的dokcer加速源&#xff0c;可以解决一部分问题&#xff0c;但仍然有一些镜像的某个版本或一些比较冷的镜像就是拉取不了&#xff0c;原因未…

libaom 源码分析:aomdec.c 文件

aomdec.c 功能:libaom 项目完成视频解码过程的 demo文件位置:libaom/apps/aomdec.c函数关系 命令行说明 终端输入 ./aomdec --help,输出如下,展示如何使用方法。Usage: ./aomdec <options> filenameOptions:--help Show usage options and exit…

基于Springboot+Vue的小型民营加油站管理系统 (含源码数据库)

1.开发环境 开发系统:Windows10/11 架构模式:MVC/前后端分离 JDK版本: Java JDK1.8 开发工具:IDEA 数据库版本: mysql5.7或8.0 数据库可视化工具: navicat 服务器: SpringBoot自带 apache tomcat 主要技术: Java,Springboot,mybatis,mysql,vue 2.视频演示地址 3.功能 这个系…

libaom 源码分析综述【持续更新】

libaom libaom 是 AOMedia&#xff08;开放媒体联盟&#xff09;开发的一个开源视频编解码器库&#xff0c;它是 AV1 视频压缩格式的参考实现&#xff0c;并被广泛用于多种生产系统中。libaom 支持多种功能&#xff0c;包括可扩展视频编码&#xff08;SVC&#xff09;、实时通信…

Linux权限和开发工具(1)

文章目录 1.Linux根目录的相关文件夹2.Linux软件管理器yum3.Linux编辑器-vim的基础使用1.命令模式下一些命令:有关光标的操作:有关复制删除的操作:有关字符替换的相关操作:有关注释的相关操作: 2.插入模式3.底行模式下一些命令:实现双窗口 4.vim命令 4.vim配置5.Linux编译器-gc…

架构设计笔记-9-软件可靠性

目录 知识要点 综合知识 案例分析 1.可靠性特性&#xff0c;软硬件可靠性对比 论文 1.论软件可靠性设计技术的应用 知识要点 软件架构需求过程主要是获取用户需求&#xff0c;标识系统中所要用到的构件&#xff0c;并进行架构需求评审。其中&#xff0c;标识构件又详细地…

AI周报(10.6-10.12)

AI应用-AI中医诊疗 AI中医诊疗通过整合中医“望、闻、问、切”的传统诊断方法&#xff0c;并结合现代AI技术&#xff0c;如自然语言处理和图像识别&#xff0c;来辅助医生进行更精准的诊断。 望诊&#xff0c;作为中医四诊之首&#xff0c;其精髓在于“司外揣内”。医者通过细致…

Java通过RAG构建专属知识问答机器人_超详细

RAG&#xff1a;融合检索与生成的文本精准生成技术 检索增强生成&#xff08;RAG&#xff09;是一种技术&#xff0c;它通过结合检索模型和生成模型来提高文本生成的准确性。具体来说&#xff0c;RAG首先利用检索模型从私有或专有的数据源中搜索相关信息&#xff0c;然后将这些…

STM32—SPI通讯协议

前言 由于I2C开漏外加上拉电阻的电路结构&#xff0c;使得通信线高电平的驱动能力比较弱&#xff0c;这就会号致&#xff0c;通信线由候电平变到高电平的时候&#xff0c;这个上升沿耗时比较长&#xff0c;这会限制I2C的最大通信速度&#xff0c; 所以&#xff0c;I2C的标准模…

uniapp学习(003-2 vue3学习 Part.2)

零基础入门uniapp Vue3组合式API版本到咸虾米壁纸项目实战&#xff0c;开发打包微信小程序、抖音小程序、H5、安卓APP客户端等 总时长 23:40:00 共116P 此文章包含第15p-第p20的内容 文章目录 事件监听以及组件内置事件处理自定义模板快速创建uniapp条件渲染 v-if和v-elsev-e…

搭建一个vue3+vite框架

可以使用以下两种搭建方式 通过create-vue搭建vue3 项目&#xff08;建议使用&#xff09; create-vue create-vue 是 Vue.js 官方推荐的用于快速启动 Vite 驱动的 Vue 项目的脚手架工具。它简化了创建新 Vue 项目的过程&#xff0c;提供了预配置的项目结构&#xff0c;并集…

Mac 远程 Windows 等桌面操作系统工具 Microsoft Remote Desktop for Mac 下载安装详细使用教程

最近需要在 Mac 上远程连接控制我的 windows 电脑系统&#xff0c;经过一番尝试对于 win 来说还是微软自家推出的 Microsoft Remote Desktop for Mac 最最好用&#xff0c;没有之一 简介 Microsoft Remote Desktop是一款由微软公司开发的远程桌面连接工具&#xff0c;可以让用…

如何解决与kernel32.dll相关的常见错误:详细指南解析kernel32.dll文件缺失、损坏或错误加载问题

当你的电脑中出现错误kernel32.dll丢失的问题&#xff0c;会导致电脑不能出现正常运行&#xff0c;希望能够有效的帮助你有效的将丢失的kernel32.dll文件进行修复同时也给大家介绍一些关于kernel32.dll文件的相关介绍&#xff0c;希望能够有效的帮助你快速修复错误。 kernel32.…

学习笔记——交换——STP(生成树)基本概念

三、基本概念 1、桥ID/网桥ID (Bridege ID&#xff0c;BID) 每一台运行STP的交换机都拥有一个唯一的桥ID(BID)&#xff0c;BID(Bridge ID/桥ID)。在STP里我们使用不同的桥ID标识不同的交换机。 (2)BID(桥ID)组成 BID(桥ID)组成(8个字节)&#xff1a;由16位(2字节)的桥优先级…

QT布局详解 QT5大布局详解

QT布局详解 QT5大布局详解 1. Qt 布局基础 在 Qt 中&#xff0c;布局管理器用于自动调整窗口中控件的位置和大小。它们根据控件的尺寸策略、父窗口的大小以及控件的彼此关系&#xff0c;动态地调整控件。 常用的布局类包括&#xff1a; QHBoxLayout&#xff1a;水平布局管理…