java利用try...catch语句连续输入

Posted Arsenal_张文治

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java利用try...catch语句连续输入相关的知识,希望对你有一定的参考价值。

给你一个整数数组 nums 和一个整数 k ,编写一个函数来判断该数组是否含有同时满足下述条件的连续子数组:

子数组大小 至少为 2 ,且
子数组元素总和为 k 的倍数。
如果存在,返回 true ;否则,返回 false 。

如果存在一个整数 n ,令整数 x 符合 x = n * k ,则称 x 是 k 的一个倍数。0 始终视为 k 的一个倍数。

示例 1:

输入:nums = [23,2,4,6,7], k = 6
输出:true
解释:[2,4] 是一个大小为 2 的子数组,并且和为 6 

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/continuous-subarray-sum

package JavaPackageOne;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.Map;

class Solution {
    public static boolean checkSubArraySum(int[] nums, int k) {
        int m = nums.length;
        if (m < 2) {
            return false;
        }
        Map<Integer, Integer> map = new HashMap<>();
        map.put(0, -1);
        int remainder = 0;
        for (int i = 0; i < m; i++) {
            remainder = (remainder + nums[i]) % k;
            if (map.containsKey(remainder)) {
                int prevIndex = map.get(remainder);
                if (i - prevIndex >= 2) {
                    return true;
                }
            } else {
                map.put(remainder, i);
            }
        }
        return false;
    }

    public static int[] stringToInt(String[] arr) {
        int[] ints = new int[arr.length];
        for (int i=0; i<arr.length; i++) {
            ints[i] = Integer.parseInt(arr[i]);
        }
        return ints;
    }

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String str;
        while ((str = br.readLine()) != null) {
            try {
                // nums
                String[] arr = str.split(", ");
                String[] arr1 = arr[0].split(" = ");
                String[] numsArray =
                        arr1[1].replace("[", "").replace("]", "").split(",");
                String[] arr2 = arr[1].split(" = ");
                int k = Integer.parseInt(arr2[1]);

                int[] nums = stringToInt(numsArray);
                System.out.println(checkSubArraySum(nums, k));
            } catch (Exception e) {
                // e.printStackTrace();
                // 回车一行就退出
                break;
            }
        }
    }
}
View Code

输入:

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str;
while ((str = br.readLine()) != null) { // 执行的代码块 }

## String[]数组转int[]数组:

public static int[] stringToInt(String[] arr) {
        int[] ints = new int[arr.length];
        for (int i=0; i<arr.length; i++) {
            ints[i] = Integer.parseInt(arr[i]);
        }
        return ints;
}

 

以上是关于java利用try...catch语句连续输入的主要内容,如果未能解决你的问题,请参考以下文章

java中 try-catch语句

Scanner Try Catch语句导致java.util.InputMismatchException

JAVA中try catch捕获异常的问题

Java异常处理try...catch语句

/异常语句try,catch.

Java中的异常处理try catch(第八周课堂示例总结)