Java基础刷题,一篇入门_java刷题书籍

yumo66622小时前技术文章7

文章目录

Java基础学习主要以练习为主, 很多朋友听完视频课程学会基础以后感觉对练手项目无从下手 ,这里推荐去 牛客网 看看,这里的IT题库内容很丰富,属于国内做的很好的IT学习网站,而且是 课程+刷题+面经+求职+讨论区分享, 一站式求职学习网站,最最最重要的里面的资源全部免费!!

从基础开始练习, 知识点编排详细,题目安排合理,题目表述以指导的形式进行。 整个题单覆盖了java入门的全部知识点以及全部语法,通过知识点分类逐层递进, 从基础开始到最后的实践任务 ,都会非常详细地指导你应该使用什么函数,应该怎么输入输出。

牛客网还提供题解专区和讨论区会有大神提供题解思路,对新手玩家及其友好,有不清楚的语法,不理解的地方,看看别人的思路,别人的代码,也许就能豁然开朗。快来点击链接开始刷题吧: 牛客网刷题进阶!

第一题:判断学生成绩

题目描述

定义一个方法用于录入学生的考试成绩,要求考试成绩必须在0-100之间,不满足就产生一个自定义异常,控制台输出一个错误信息"分数不合法"(请输出自定义异常对象的错误信息,将错误信息设置为分数不合法)

输入描述:

控制台输入的int类型整数

输出描述:

若分数合法则输出该分数,否则输出错误信息分数不合法

输入: 100

输出: 100

输入:-1

输出: 分数不合法

import java.util.*;
 
public class Main {
 
    public static void main(String[] args) {
 
        Scanner scanner = new Scanner(System.in);
        int score = scanner.nextInt();
        try{
 
            if(score >= 0 && score <= 100) //正常分数输出
                System.out.println(score);
            else
                throw new ScoreException("分数不合法"); //抛出异常
        }
        catch(ScoreException str){
 
            System.out.println(str.getMessage()); //输出异常
        }
    }
}
 
class ScoreException extends Exception{
  //继承自异常类的分数异常处理类
    public ScoreException(String message){
  //构造函数
        super(message); //输入异常信息
    }
}

第二题:字符串去重

题目描述

从键盘获取一串字符串,要求去除重复的字符。请使用HashSet解决这一问题

输入描述:

键盘输入的任意字符串

输出描述:

去重后的字符串(不要求顺序,预设代码中已经给出输出)

输入: helloworld

输出: rdewhlo

import java.util.HashSet;
import java.util.Scanner;
 
public class Main {
 
    public static void main(String[] args) {
 
        Scanner scanner = new Scanner(System.in);
        String str = scanner.nextLine();
        scanner.close();
        HashSet<Character> hs = new HashSet<>();
 
        //write your code here......
//          新建HashSet,然后遍历字符串,将所有字符添加到Set。
//          由于HashSet本身结构不允许有重复的项,所以会自动去除重复的元素
         
        for(int i=0;i<str.length();i++){
 
            hs.add(str.charAt(i));
            //str.charAt (i)的意思是第i个字符在字符串str中所占的位置
            //不能直接使用str[i]这种方法来取字符串的值,这种取法只适合数组根据索引下标取值
        }
//         //第二种写法
//         //因为增强for循环只能够对数组进行循环,故我们应该先对str字符串进行toCharArray()将其数组化,进而取得其值
//         for(char c:str.toCharArray(){
 
//             hs.add(c);
//         }
         
        for (char c:hs) {
 
            System.out.print(c);
        }
    }
}

第三题:集合遍历

题目描述

请使用三种方式遍历一个list集合

输入描述:

键盘任意输入的五个int类型变量

输出描述:

使用三种不同的方法遍历集合,遍历输出时不换行,数字之间用空格隔开

输入: 1 2 3 4 5

输出:

普通for循环:1 2 3 4 5

增强for循环:1 2 3 4 5

迭代器遍历:1 2 3 4 5

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Scanner;

public class Main {
 
    public static void main(String[] args) {
 
        Scanner scanner = new Scanner(System.in);
        List<Integer> list = new ArrayList<>();
        int num1 = scanner.nextInt();
        int num2 = scanner.nextInt();
        int num3 = scanner.nextInt();
        int num4 = scanner.nextInt();
        int num5 = scanner.nextInt();
        scanner.close();
        list.add(num1);
        list.add(num2);
        list.add(num3);
        list.add(num4);
        list.add(num5);
        System.out.print("普通for循环:");
     
        //write your code here......
        for(int i=0;i<list.size();i++){
 
            //泛型容器类的获取其长度用size
            //数组,字符串获取其长度用length
            //泛型容器类获取其值可以用get方法,数组则是用[]加下标的方法
            System.out.print(list.get(i)+" ");
        }
 
        System.out.println();
        System.out.print("增强for循环:");
 
        //write your code here......
        for(int i:list){
 
            System.out.print(i+" ");
        }
 
        System.out.println();
        System.out.print("迭代器遍历:");
 
        //write your code here......
//         int count = 0;
//         int i =0;
//         while(count<5){
 
//             System.out.print(list.get(i)+" ");
//             i++;
//             count++;
//         } 因题目要求使用迭代器循环,故舍弃该写法!
       
         
         
        //Iterator迭代器
        /**
            hasNext()方法:
            用来判断集合中是否有下一个元素可以迭代。如果返回true,说明可以迭代。
            Next()方法:
            用来返回迭代的下一个元素,并把指针向后移动一位。
        */
        //write new code
        Iterator it = list.iterator();
        while(it.hasNext()){
 
            System.out.print(it.next()+" ");
        }
        System.out.println();
    }
}

第四题:排队系统

题目描述

请设计一个排队程序,用户有普通客人和VIP客人之分,VIP客人不排队(即VIP客人在队列头部),目前队列中已有两位客人小明和小军在排队,请将VIP客人小红新增至队列头部。

输入描述:

输出描述:

预设代码中已经指定输出

import java.util.*;
 
public class Main {
 
    public static void main(String[] args) {
 
        Guest guest1 = new Guest("小明",false);
        Guest guest2 = new Guest("小军",false);
        Guest vipGuest = new Guest("小红",true);
        Deque<Guest> deque = new ArrayDeque<>();
        deque.add(guest1);
        deque.add(guest2);
        deque.addFirst(vipGuest);
        System.out.println(deque);
    }
}
class Guest{
 
    String name;
    Boolean vip;
 
    @Override
    public String toString() {
 
        return name;
    }
 
    public Guest(String name, Boolean vip) {
 
        this.name = name;
        this.vip = vip;
 
    }
}

第五题:首尾交替出队

题目描述

现从一队学生中抽人上台演讲,为公平起见,队头队尾交替抽取,请通过程序实现这个出队的过程。

输入描述:

一组学生的名字

输出描述:

交替打印队头队尾学生的名字

输入: Tom Jim Lily Lucy Mary

输出: Tom Mary Jim Lucy Lily

import java.util.ArrayDeque;
import java.util.Scanner;
 
public class Main {
 
 
    public static void main(String[] args) {
 
        ArrayDeque deque = new ArrayDeque();
 
        Scanner scanner = new Scanner(System.in);
        while (scanner.hasNext()) {
 
            String name = scanner.next();
            // 初始化队列中的数据
            deque.offerLast(name);
        }
 
        // write your code here......
        int l = deque.size();
        for (int i=0; i<l; i++) {
 
            if (i%2==0) {
 
                System.out.println(deque.pollFirst());
            }
            else {
 
                System.out.println(deque.pollLast());
            }
        }
 
    }
 
}

相关文章

java工作流引擎(j-roadflow)快速入门教程

使用j-roadflow java工作流引擎创建一个流程分为两个步骤,创建表单和创建流程。一、创建表单。在流程管理--表单管理下点新建表单即开始创建一个新的表单:点击之后打开表单设计器并弹出表单属性设...

麻省理工女学姐推荐:这是当下最好的Java学习教程了!免费分享

Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表...

Java全系列视频教程_java教程视频完整版

资源信息本阶段不需要编程,是让初学者了解程序员这个行业,了解JAVA 的技术体系,用通俗的示例告诉大家什么是编程,并且告诉大家职业如何规划,让初学者不再迷茫。如果已经对自身职业规划比较清晰,可以跳过直...

Java 网络编程教程_java nio网络编程

第一节:网络协议TCP/UDP/SOCKET 介绍1.1 网络协议基础网络协议是计算机网络中数据交换的规则和标准。Java主要支持以下协议:TCP (Transmission Control Prot...

java入门教程1 - 安装和配置(win和linux)

windows安装和配置安装javahttps://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html目前大部分项目的...

GitHub上堪称神级的Java技术栈手册火了,看完拿38K妥妥的

前言最近看到很多粉丝问我有没有精品的学习资料,所以我根据这些年的工作经验,加上网络搜集整理了一套针对职场进阶的干货!有很多朋友靠着这些内容进行复习拿到了BATJ等大厂的offer, 还帮助了很多的Ja...