为什么要使用integer.parseint(sc.nextline());在这个程序中,而不是sc.nextint()?

68bkxrlz  于 2021-08-25  发布在  Java
关注(0)|答案(2)|浏览(611)

我正在尝试运行以下代码,当使用int-numtest=sc.nextline()时该代码不起作用,而当使用int-numtest=integer.parseint(sc.nextline())时该代码工作正常。但我试图在这里只获取一个整数值,通过它我可以从用户那里获取字符串集的数量。那么为什么我不能使用sc.nextint()?

public class Solution {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
      **try{
          int numTest = Integer.parseInt(sc.nextLine());
          for(int i = 0; i < numTest; i++){
              String ch = sc.nextLine();
           if(isBalanced(ch)){
               System.out.println("YES");
           } else {
               System.out.println("NO");
           }
          }**
        } catch(Exception e){
            System.out.println("Invalid Input");
        }
    }
    public static boolean isBalanced(String s){
        if(s == null || s.length() % 2 != 0) return false;
        Stack<Character> stack = new Stack<Character>();
        for(int i = 0; i < s.length(); i++){
            char c = s.charAt(i);
            if(c == '(' || c == '{' || c == '['){
                stack.push(c);
            } else if(c == ')' || c == '}' || c == ']'){
                if(!stack.isEmpty()){
                    char latestOpenP = stack.pop();
                    if(latestOpenP == '(' && c != ')'){
                        return false;
                    } else if(latestOpenP == '{' && c != '}'){
                        return false;
                    } else if(latestOpenP == '[' && c != ']'){
                        return false;
                    }
                } else {
                    return false;
                }
            }
        }

        return stack.isEmpty();
    }
}
jchrr9hc

jchrr9hc1#

sc.nextline()将整个文本带到下一个换行符(按enter键)。如果使用nextint(),下次尝试使用时,扫描仪将挂断。

2uluyalo

2uluyalo2#

它们具有不同的功能: nextInt() 将读取下一个令牌(并转换为 int ),也就是说,直到下一个空格字符(默认)-它不会使用该空格字符 nextLine() 将读取整行(或当前行中尚未读取的内容),并将使用行尾的换行符-因此下一次扫描将从下一行开始
如果你想阅读整行文字,请使用 nextLine() 最终 parseInt() 如果需要整数。如果一行中可以给出多个数字,请使用 nextInt() ,但请参见扫描仪在使用next()或nextfoo()后跳过nextline()?。
注意:你也可以打电话 nextLine() 之后 nextInt() 忽略该行的其余部分并跳到下一行(可能需要忽略或隐藏输入错误!)在我看来,最好使用 parseInt(nextLine()) 组合以发出最终无效输入的信号。

相关问题