Java:为什么main方法中的整数与方法

时间:2017-07-29 16:20:59

标签: java

import java.util.*;

public class Main_5 {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
         int m = sc.nextInt();
        for(int i = 0; i < m; i++){
            String password = sc.nextLine();
            System.out.println(got(password));
        }
    }

    public static String got(String password) {
        HashMap<Character, Integer> checkpass = new HashMap<>();
        Character ch = null;
        Integer val = 0;
        int odd = 0, even = 0;
        for (int i = 0; i < password.length(); i++) {
            ch = password.charAt(i);
            if (checkpass.containsKey(ch) == false) {
                checkpass.put(ch, 1);
            } else {
                 val = (Integer) checkpass.get(ch);
                checkpass.put(ch, val + 1);
            }
         }
         Set<Character> hashval = checkpass.keySet();
        for (Character key : hashval) {
             val = (Integer) checkpass.get(key);
            if (val == password.length())
                return "YES";
            else if (val % 2 == 1)
                odd++;
            else
                even++;
        }
        if (odd == 1 || odd == 0)
            return "YES";
        else
            return "NO";
    }

}

请为自己测试 如您所见,main方法中有整数m。当我点击运行时,它使整数m好像它是get方法的一部分。这是一个代码,用于查找x字符串是否可以是排列回文。 这应该是控制台应该是什么样子:

*Input*:
     3
     ccaabcbb
     azzza
     bbbbccccdddddddd
*Output*:
     NO
     YES
     YES

2 个答案:

答案 0 :(得分:0)

我错了,但重写了m

int m = Integer.parseInt(sc.nextLine());

应该做的伎俩。使用扫描仪nextInt()并从标准输入中读取新行时会出现问题。

答案 1 :(得分:0)

使用sc.next()而不是sc.nextLine()作为它给出第一次输入创建的空行。

Foo