当前位置: 首页 > 知识库问答 >
问题:

为什么要使用整数。parseInt(sc.nextLine());在这个程序中,而不是sc.nextInt()?

文喜
2023-03-14

我试图运行下面的代码,当使用int numTest=sc.nextInt()时不起作用,而当使用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();
    }
}

共有2个答案

萧胜
2023-03-14

它们具有不同的功能:

  • nextInt()将读取下一个标记(并转换为int),即直到下一个空格字符(默认)-它不会消耗该空格字符
  • nextLine()将读取整行(或尚未从当前行读取的内容)并在行尾使用换行符-因此下一次扫描将从下一行开始

如果要读取整行,请使用nextLine(),如果需要整数,则最终使用parseInt()。如果一行中可以给出多个数字,请使用nextInt(),但请参阅Scanner在使用Next()或nextFoo()后跳过nextLine()?。

注意:您也可以在nextInt()之后调用nextLine(),忽略该行的其余部分并跳到下一行(可能需要忽略或隐藏输入错误!)在我看来,最好使用parseInt(nextLine())组合来表示最终的无效输入。

邹嘉致
2023-03-14

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

 类似资料:
  • 我在做一些初学者编码的挑战,其中一个挑战是制作一个反转给定字符串的程序。它对单词起作用,但当我输入单词时,中间有空格,程序只会反转输入的第一个单词。 我谷歌了“java中带空格的反向单词”,发现了这个: > 我可以修改我自己的代码,使它在不遵循上述代码的情况下颠倒一个句子吗?我的代码:

  • 据我所知,在java中,如果没有try-and-catch或其上方的函数减速,则不应编译引发异常的函数。那么,为什么这个代码是合法的,不会被压碎呢? 即使是整数。parseInt()引发:NumberFormatException-如果字符串不包含可解析的整数。

  • 问题内容: 我一直在阅读Go,并为这个基本问题感到困惑。 在Go中,很明显,切片更灵活,并且在需要一系列数据时通常可以代替数组使用。 阅读了大多数文档,他们似乎鼓励开发人员只使用切片而不是数组。我得到的印象是,创建者可以简单地将数组设计为可调整大小的,而无需整个切片部分即可完成。实际上,这样的设计会使该语言更易于理解,甚至鼓励使用更多惯用的代码。 那么,为什么创建者首先要允许数组呢?什么时候可以使

  • 问题内容: 我不确定为什么列出项目时为什么需要使用ul-li而不是简单地使用div。我可以使两者看起来完全一样,因此与创建div相比,创建无序列表的功能优势在哪里? 问题答案: 为了语义正确。HTML具有表达事物列表的功能,它可以帮助Google机器人,屏幕阅读器以及所有不仅仅关心网站外观的用户更好地了解您的内容。

  • 问题内容: 在Java中,hashcode()方法返回整数而不是long。有什么具体原因吗? 问题答案: 那么,一个良好的理由是,基于数据结构(,)使用一个数组来存储箱,并且阵列被限制为索引。 如果必须将其映射到数组索引,那么您将一无所获。

  • 问题内容: 目前使用jQuery,当我需要在发生点击时做一些事情时,我会像这样… 我正在看别人在项目上有的代码,他们这样做是… 请注意,就我所知,它似乎在做相同的事情,除了它们使用的是live()函数(现在已弃用并且jQuery文档说要使用live()函数),但是无论哪种方式,为什么要使用live / on()而不是我的第一个示例? 问题答案: 因为您可能具有动态生成的元素(例如,来自AJAX调用