Java_tips4: Java机试---常见的矩阵输入操作

这篇博客主要介绍了Java编程中输入输出的基本操作,包括整型、浮点型、字符型和字符串型数据的获取。同时讲解了如何处理不同类型的矩阵数据,如已知行数和列数、未知列数的矩阵,以及行数和列数都不确定的情况。此外,还涉及到了字符串的合法性检查以及Map集合的排序方法。通过实例代码展示了如何实现这些功能。
摘要由CSDN通过智能技术生成

题目零:输入一个整型,浮点型,字符型和字符串型的数

题目0:
例子:
1 2.0 avc acv

public class Main5 {
    public static void main(String[] args) {
        //输入:
        Scanner cin=new Scanner(System.in);
        //1)获取整型
        int A=cin.nextInt();
        //2)获取浮点型
        double B=cin.nextDouble();
        //3)获取字符串型
        String  C=cin.next();
        String  D=cin.next();

        System.out.println("A="+A);   //A=1
        System.out.println("B="+B);   //B=2.0
        System.out.println("C="+C);   //C=avc
        System.out.println("D="+D);   //D=acv

        //4)获取一行
        String E=cin.nextLine();
        System.out.println("E="+E);
    }
}
题目一:输入一个矩阵,已知数据的行数和列数(用数组装数据最好)

题目三:第一行两个正整数M和N,接下来M行,每行N个非负整数(用空格隔开)
在已知行和列的情况下,可以用数组装数据最快
数据的输入格式:把后面T行数据用一个集合装起来。
例子:
2 3
1 2 3
1 5 6
结果:string={[2,3],[1,2,3],[1,5,6]}

public class Main3 {
    public static void main(String[] args) {
        //输入:指定行和列数进行输入
        //第一行:输入两个数m,n
        //后面m行,每行n个数字
        Scanner cin=new Scanner(System.in);
        int row= cin.nextInt();
        int col= cin.nextInt();
        int[][] string=new int[row][col];
        for(int i=0; i<row;i++){
            for(int j=0;j<col;j++){
                string[i][j]=cin.nextInt();
            }
        }
    }
}
题目二:输入一个行,列数不清楚(用集合装数据最好)
        Scanner cin=new Scanner(System.in);
        //1)输入(输入一行,没有指定有多少个数字)
        //1 2 3 4 5
        List<Integer> list=new ArrayList<>();
        String string=cin.nextLine();
        String[] arrstring=string.split(" ");
        for(int i=0;i<arrstring.length;i++){
            list.add(Integer.valueOf(arrstring[i]));
        }
        System.out.println("list="+list);
题目三:输入一个矩阵,已知数据的行数,不知列数(用集合装数据最好)

题目三:第一行输入一个整数size;第二行之后共有size行数据
数据的输入格式:把输入数据用一个集合装起来。
例子:
3
1 2 3 4
2 3 5 4
7 8 9 8
输出结果:list=[[1, 2, 3, 4], [2, 3, 5, 4], [7, 8, 9, 8]]

public class Main{
        public static void main(String[] args) {
        Scanner cin=new Scanner(System.in);
        int size= cin.nextInt();
        cin.nextLine();  //注释:一定要这一句,因为nextInt()没有换行,否则会读到一个空行
        List<List<Integer>> list=new ArrayList<>();
        for(int i=0;i<size;i++){
            List<Integer> arrlist=new ArrayList<>();
            String string=cin.nextLine();
            String[] temp=string.split(" ");
            for(int j=0;j< temp.length;j++){
                arrlist.add(Integer.valueOf(temp[j]));
            }
            list.add(arrlist);
            }
        System.out.println("list="+list);
    }
}

题目四:输入一个矩阵,行数和列数都不清楚(用集合装数据最好)

每行若干个整数(用空格隔开)
数据的输入格式:把输入数据用一个集合装起来。
例子:
1 2 3
2 5 3 5 8 1
4 5 6 8
输出结果:data=[[1, 2, 3], [2, 5, 3, 5, 8, 1], [4, 5, 6, 8]]

//核心是遇到了空行则break
public class Main {
    public static void main(String[] args) {
        //0)核心目的:在不知道行和列的情况下输入
        //1)准备工作:数据集合和输入器
        List<List<Integer>>  data= new ArrayList<>();
        Scanner cin=new Scanner(System.in);
        //2)判断是否还有下一行
        while(true) {
            List<Integer> list= new ArrayList<>();
            String string=cin.nextLine();
            //3)设置截止条件(空行结束)
            if(string=="") break;
            //4)把字符串转变为集合
            String[] arrstring=string.split(" ");
            for(int i=0;i<arrstring.length;i++){
                list.add(Integer.parseInt(arrstring[i]));//把字符型转变为整型
            }
            data.add(list);
        }
        //输出显示
        System.out.println("data="+data);
    }
}
题目五:实战题目

// 2:第一行:整数M,表示搜索的次数(表示接下来有2M行数据),第一行为搜索词,第二行为停用词。
// 3 a ab abc:第三行:搜索词:第一个数为之后字符串的个数n,后面就为n字符串
// 2 q qe :第四行:停用词:第一个数为之后字符串的个数n,后面就为n字符串
// 4 a ab abc abcd:搜索词:第一个数为之后字符串的个数n,后面就为n字符串
// 3 a ab abc:停用词:第一个数为之后字符串的个数n,后面就为n字符串

        Scanner cin=new Scanner(System.in);
        int size=cin.nextInt();
        cin.nextLine();
        List<List<String>> data=new ArrayList<>(); //搜索词
        List<List<String>> stopdata=new ArrayList<>(); //停用词
        for(int i=0;i<size;i++){
            List<String> arrdata=new ArrayList<>();
            int num=cin.nextInt();
            for(int j=0;j<num;j++){
                arrdata.add(cin.next());
            }
            data.add(arrdata);

            List<String> arrstopdata=new ArrayList<>();
            int num1=cin.nextInt();
            for(int j=0;j<num1;j++){
                arrstopdata.add(cin.next());
            }
            stopdata.add(arrstopdata);
        }
        System.out.println("data="+data);
        System.out.println("stopdata="+stopdata);
        //data=[[a, ab, abc], [a, ab, abc, abcd]]
        //stopdata=[[q, qe], [a, ab, abc]]
题目六:判断一个字符串中的字符是否都在0-9,a-z和A-Z里
        Scanner cin=new Scanner(System.in);
        String data=cin.next();
        for(int i=0;i<data.length();i++){
            char target=data.charAt(i);
            if((target-'0'>=0 && target-'9'<=0) ||(target-'a'>=0 && target-'z'<=0) ||(target-'A'>=0 && target-'Z'<=0)){
                System.out.println(true);
            }else{
                System.out.println(false);
            }
        }
题目七:一个map集合(String,Integer),根据值的大小从大到小排,如果值相同,则根据键的大小从小到大排。
  1. map集合的默认排序规则是根据key值进行排序。
public static void main(String[] args) {
        Scanner cin=new Scanner(System.in);
        //6)对于一个map,先按值从大到小排序,如果值相同,则按照名字从小到大排序
        //几个对象:N
        //每个对象的名字:apple ben san kevin
        //每个对象的家产:10 20 35 10
        int size=cin.nextInt();
        cin.nextLine();
        List<String> name=new ArrayList<>();
        for(int i=0;i<size;i++){
            name.add(cin.next());
        }
        List<Integer> money=new ArrayList<>();
        for(int i=0;i<size;i++){
            money.add(cin.nextInt());
        }
        System.out.println(name+":"+money);
        //(2)获取对应的map集合
        Map<String,Integer> map=new HashMap<>();
        for(int i=0;i<size;i++){
            map.put(name.get(i),money.get(i));
        }
        //(3)把map集合装入list中
        List<Map.Entry<String,Integer>> list=new ArrayList<>(map.entrySet());

        //(4) 重新自定义Collections的排序规则
        Collections.sort(list, new Comparator<Map.Entry<String, Integer>>() {
            @Override
            public int compare(Map.Entry<String, Integer> o1, Map.Entry<String, Integer> o2) {
                if(o1.getValue() ==o2.getValue()){
                    return o1.getKey().compareTo(o2.getKey());
                }else{
                    return o2.getValue()-o1.getValue();
                }
            }
        });
        System.out.println(list);
    }
根据提供的引用内容,可以看出这是一个关于Java HTTP获取access token的问题。根据引用中的正确演示,我们可以使用Java的HttpURLConnection类来发送POST请求,同时将请求参数的内容类型改为json(contentType: 'application/json'),并将参数放到body中进行提交。具体实现可以参考以下代码: ``` import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.OutputStream; import java.net.HttpURLConnection; import java.net.URL; public class AccessTokenUtil { public static String getAccessToken(String appid, String secret) { String accessToken = ""; try { URL url = new URL("https://developer.toutiao.com/api/apps/v2/token"); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setRequestMethod("POST"); conn.setRequestProperty("Content-Type", "application/json"); conn.setDoOutput(true); String input = "{\"appid\":\"" + appid + "\",\"secret\":\"" + secret + "\",\"grant_type\":\"client_credential\"}"; OutputStream os = conn.getOutputStream(); os.write(input.getBytes()); os.flush(); BufferedReader br = new BufferedReader(new InputStreamReader((conn.getInputStream()))); String output; while ((output = br.readLine()) != null) { accessToken += output; } conn.disconnect(); } catch (Exception e) { e.printStackTrace(); } return accessToken; } } ``` 以上代码中的getAccessToken方法接收两个参数:appid和secret,分别对应开发者的应用ID和应用密钥。该方法返回一个字符串类型的access token,可以根据需要进行解析和使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值