如何修复:线程 "main" java.util.NoSuchElementException 中的异常:找不到行

how to fix : Exception in thread "main" java.util.NoSuchElementException: No line found

我尝试将我的名字输入扫描仪,但它抛出异常:

Username is: danny

Exception in thread "main" java.util.NoSuchElementException: No line found
    at java.base/java.util.Scanner.nextLine(Scanner.java:1651)
    at NonDuplicateCharacters.main(NonDuplicateCharacters.java:10)

我的输入

danny
1 2 3 4 3 2 1

预期输出

danny
4

我的代码:

import java.util.*;  
public class NonDuplicateCharacters {  
     public static void main(String[] args) {  
     Scanner myObj = new Scanner(System.in);
     String userName = myObj.nextLine(); 
     System.out.print("Username is: " + userName);
    
    
        Scanner input1= new Scanner(System.in);
        String number = input1.nextLine();
        int count;  
          
        
        char string[] = number.toCharArray();  
          
        
        for(int i = 0; i <string.length; i++) {  
            count = 1;  
            for(int j = i+1; j <string.length; j++) {  
                if(string[i] == string[j] && string[i] != ' ') {  
                    count++;  
                    string[j] = '0';  
                }  
            }  
           
            if(count == 1 && string[i] != '0' && string[i] != ' ')  
                System.out.println(string[i]);  
        }  
    }  
}  

我阅读了更改 nextline() next() 的解决方案,我尝试了但它不起作用。抱歉语法错误

您正在基于 System.in.

创建两个 Scanner 对象

每个 ScannerSystem.in 读取 并消耗它的一些输入。这意味着当您创建第二个时,第一个可能已经将一些内容读入其缓冲区。

简短的回答是:永远不要根据相同的参数创建多个 Scanner 对象,只需继续使用现有的扫描器即可。例如,这将解决您的问题:

public static void main(String[] args) {  
     Scanner myScanner = new Scanner(System.in);
     String userName = myScanner.nextLine(); 
     System.out.print("Username is: " + userName);
    
    
     String number = myScanner.nextLine();
     // ... rest of your code ...