栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

【牛客刷题1】组队竞赛

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【牛客刷题1】组队竞赛

题目描述

题目链接:牛客组队竞赛

解题思路:

解题代码:

import java.util.*;
public class Main{
    public static void main(String[] args){
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        long sum = 0;
        int []array = new int[3*n];
        for(int i =0;i 

        做题过程的自我剖析

         总的来说,能读懂,有思路,但写不出,原因有下:

    牛客网的输入输出不熟悉,又或者说对输入输出这一知识点不够了解,并且不会运用,比如说next(),nextInt(),hasNext()等的用法不熟悉。基础语法知识不牢固,要用的时候,脑子成一团浆糊,搅出来的都是浆。字符串的知识点不熟悉,也就是不成体系,学过就忘。

        那么本次博客借着回顾这道题来查缺补漏。

1.输入输出

        在Java中输出是相对来说比较容易的,用 System.out.println 语句就可以了。然后,输出却麻烦一点,它需要先构造一个Scanner对象,并且与“标准输入流” System.in,相关联。

Scanner in = new Scanner(System.in);

        定义了上面这条语句,就能进行Scanner类的各种方法实现输入操作了

public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("What is your name?");
        String str = scanner.nextLine();
    }


        这里用到了nextLine方法是因为在输入行中有可能包含空格。

        那么,如果我们要想读取一个单词(以空白符作为分隔符,) 就调用:

String str = scanner.next();

要想读取一个整数, 就调用 nextlnt 方法

System.out.print("How old are you? ");
int age = in.nextlnt();

        由于Scanner 类定义在java.util 包中。 当使用的类不是定义在基本java.lang 包中时,一定要使用import 指示字将相应的包加载进来。

        所以,我们要在在程序的最开始添加上一行:

import java.util.*;

 
【注意】因为输入是可见的, 所以 Scanner 类不适用于从控制台读取密码。Java SE 6 特别引入了 Console 类实现这个目的。要想读取一个密码, 可以采用下列代码:(这里以后有时间可单独写一篇博客介绍)

Console console = System.console();
String username = console.readLine("User name");
char[] password = console.readPassword("Password:");

2.关于牛客网上的输入输出

这部分内容,来自以下文章:
牛客网输入输出(Java)总结

预备知识

    Windows中的Enter键相当于回车(r)+换行(n),分别完成将光标移到行首、移到下一行的功能;nextInt():直至读取到空格或回车之后结束本次的int值;next():直至读取到空格或回车之后结束本次的String值,不可读取回车;nextLine():直至读取到换行符(回车)之后结束本次读取的String,可读取回车(空值)。

 

1、读取连续整数

输入:包括两个正整数a,b(1 <= a, b <= 10^9),输入数据包括多组。

输出:a+b的结果。

import java.util.Scanner;
public class Main{
    public static void main(String[] args) {
        Scanner in=new Scanner(System.in);
        while(in.hasNext()){
            int a=in.nextInt();
            int b=in.nextInt();
            System.out.println(a+b);
        }
    }
}

2、读取有限整数

输入:第一行包括一个数据组数t(1 <= t <= 100),接下来每行包括两个正整数a,b(1 <= a, b <= 10^9)

输出:a+b的结果

public static void main(String[] args){
        Scanner in=new Scanner(System.in);
        int n=in.nextInt();
        while(n > 0){
            int a=in.nextInt();
            int b=in.nextInt();
            System.out.println(a+b);
            n--;
        }
    }

3、每行读取空格隔开的整数

输入:输入数据有多组, 每行表示一组输入数据。每行不定有n个整数,空格隔开。(1 <= n <= 100)。

输出:每组数据输出求和的结果

import java.util.Scanner;
import java.lang.String;
import java.lang.Integer;
public class Main{
    public static void main(String[] args){
        Scanner in=new Scanner(System.in);
        while(in.hasNext()){
            String[] temp=in.nextLine().split(" ");
            int sum=0;
            for(String s:temp)
                sum+=Integer.valueOf(s);
            System.out.println(sum);
        }
    }
}

易错点:

    nextInt()或者next()读取完毕并回车之后其后紧跟nextLine(),就会导致nextLine()读取到空值,因为nextLine()自动读取到’n’,意味着遇到结束符;有时候将字符串转为整数时,代码没问题却提示数组越界,往往是因为字符串代表的整数超过了int的最值,需要改用long。
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/777901.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号