算法-输入输出java


Leetcode是直接调用我们写一个函数来测试算法,不存在数据的读取问题。牛客是写一个完整的程序, 需要读取题目给出的数据。牛客的数据处理方式:需要接受数据,返回数据。

Scanner类

java语言的输入输出主要是依靠Scanner类。

Scanner类的功能:可以实现键盘输入数据到程序中

  • 导包:import java.util.Scanner;【import 包路径.类名称()】
  • 创建: Scanner in = new Scanner(System.in); 【类名称 对象名=new 类名称();】
    • ps: System.in代表从键盘进行输入
  • 使用
    对象名.成员方法名();
    • 获取键盘输入的一个int数字:int n=sc.nextInt();
    • 获取键盘输入的一个字符串:String str=sc.next();

具体参考方法如下所示:

import java.util.Scanner;
//注入import也需要自己导入

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        while (in.hasNextInt()) { // 注意 while 处理多个 case
            int a = in.nextInt();
            int b = in.nextInt();
            System.out.println(a + b);
        }
    }
}

hasNext() vs hasNextLine() vs hasNextInt()

  • hasNext()方法会认为之后再没有非空字符,会返回一个false

  • hasNextLine() 方法会认为换行符\n是一个空行,符合行的匹配模式,则会返回一个true,但实际上由于之后再没有数据了,所以会在读取输入流的时候发生异常,从而导致整个运行报错.

  • hasNext()方法会判断接下来是否有非空字符.如果有,则返回true,否则返回false

  • hasNextLine() 方法会根据行匹配模式去判断接下来是否有一行(包括空行),如果有,则返回true,否则返回false

  • 采用hasNextXxxx() 的话,后面也要用nextXxxx():

    • 比如前面用hasNextLine(),那么后面要用 nextLine() 来处理输入;

    • 后面用 nextInt() 方法的话,那么前面要使用 hasNext()方法去判断.

输出结果

  • **System.out.pirnt(10);**一般输出,同样不能保留精度格式转化,也不能换行输出;
  • **System.out.printf(“%.2f”,10.344568);**常用于格式转换,但需要注意不是换行输出,只用于精度转换(保留两位小数)
  • **System.out.println();**为换行输出,不能用于格式转换

案例

若输入和输出均为整数:

//按照输入的数字的个数进行计算的
import java.util.Scanner;
//注入import也需要自己导入

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        sc.nextInt();//输出的数据,不需要进行使用
        while (in.hasNextInt()) { //判断是否有整数输入
       //while (in.hasNext()) { //判断是否有数字输入
            int a = in.nextInt();//输入的第一个整数
            int b = in.nextInt();//输入第二个整数
            if(a<1 ||b>1000) {break;}//判断结束条件
            System.out.println(a + b);//输出结果
        }
    }
}

//按照输入的行进行计算
import java.util.Scanner;
public class Main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        while(sc.hasNextLine()){
            String[] s= sc.nextLine().split(" ");//对每行数字进行划分,如1 2 3 4 转换成{"1","2","3","4"}
            int sum=0;
            for(int i=0;i<s.length;i++){
                sum+=Integer.parseInt(s[i]);//将str类型转化为int类型
            }
            System.out.println(sum);
        }
    }
}

若输入和输出均为字符串:

import java.util.Scanner;
import java.util.Arrays;
import java.lang.Integer;

public class Main{
    public static void main(String[] agrs){
        Scanner sc = new Scanner(System.in);
        int count = Integer.parseInt(sc.nextLine());
        String[] strs = sc.nextLine().split(" ");//对输入的字符进行分割
        String[] strs = sc.nextLine().trim().split(" ");//trim() 方法用于删除字符串的头尾空白符,空白符包括:空格、制表符 tab、换行符等其他空白符
        Arrays.sort(strs);//按照首字母abcd进行排序
        Long a = Long.parseLong(strs[0]);//将字符串转换成数字的方法。
        Long b = Long.parseLong(strs[1]);
        for (int i = 0; i < count-1; i++){
            String res = strs[i] + " ";
            System.out.print(res);
        }
        System.out.printf(strs[count-1]);
        
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值