Tag: java.util.scanner

Scanner.hasNext()返回false

我有一个包含许多文件的目录 – 每个文件包含800多行。 Hovewer,当我尝试使用Scanner阅读它时,它似乎是空的。 File f1 = new File(“data/cityDistances/a.txt”), f2 = new File(“data/cityDistances/b.txt”); System.out.println(f1.exists() && f2.exists()); //return true System.out.println(f1.getTotalSpace() > 0 && f2.getTotalSpace() > 0); //return true Scanner in = new Scanner(f1); System.out.println(in.hasNext()); // return false; System.out.println(in.hasNextLine()); //return false; 为什么它会像那样? 我已经设法使用BufferedReader 。 尽管如此, BufferedReader工作原理和Scanner工作原理似乎更加奇怪。

如何在扫描仪输入之前运行一段时间?

我正在尝试编写一个循环,直到我在运行应用程序的控制台中键入特定文本。 就像是: while (true) { try { System.out.println(“Waiting for input…”); Thread.currentThread(); Thread.sleep(2000); if (input_is_equal_to_STOP){ // if user type STOP in terminal break; } } catch (InterruptedException ie) { // If this thread was intrrupted by nother thread }} 我希望它在每次通过时写一行,所以我不希望它在一段时间内停止并等待下一个输入。 我需要使用多个线程吗?

如何停止等待用户输入?

我正在构建一个程序来询问乘法,我想设置一个计时器来强制该人在给定时间内给出答案: 如果此人在计时器结束前回答:请进行下一次乘法 如果计时器到达终点,则停止等待用户输入:转到下一个乘法 目前,案例1可以完成,但不是2 ,我正在考虑return;的方法return; 从一个线程内的方法或其他东西,我不知道如何 所以我遇到了一个问题,如果Scanner打开,等待输入,如何阻止? 我已经尝试将它放在一个线程和interrupt()它或使用boolean作为标志,但它不会停止Scanner class Multiplication extends Calcul { Multiplication() { super((nb1, nb2) -> nb1 * nb2); } @Override public String toString() { return getNb1() + “*” + getNb2(); } } abstract class Calcul { private int nb1, nb2; private boolean valid; private boolean inTime = true; private boolean answered = […]

如何使用扫描仪和模式类匹配文本中的模式?

我想查找我的文本文件中是否存在特定模式。 即时通讯使用以下类: java.util.regex.Pattern and java.util.Scanner; 我的示例文本行是 String Line=”DBREF 1A1F A 102 190 UNP P08046 EGR1_MOUSE 308 396″; 而且,我想匹配以下类型的模式: A 102 190 其中,在A的位置az或AZ但是单个包机。 在102的位置任何整数和任何长度。 在190的位置任何整数和任何长度。 而且,我的模式匹配代码是: Scanner sr=new Scanner(Line); Pattern p = Pattern.compile(“\\s+([a-zA-Z]){1}\\s+\\d{1,}\\s+\\d{1,}\\s+”); while(sr.hasNext(p)) { System.out.println(“Pattern exists”); System.out.println(“Matched String : “+sr.next(p)); } 但是,即使它存在,模式也不匹配.. 我认为问题在于我的模式字符串: \\s+([a-zA-Z]){1}\\s+\\d{1,}\\s+\\d{1,}\\s+” 任何人,Plz帮助我应该使用什么模式字符串????

使用Scanner的nextLine()和hasNextLine()方法时出现问题

我有一个包含以下数据的日志文件: 最短路径(2):: RV3280-RV0973C-RV2888C 最短路径(1):: RV3280-RV2502C 最短路径(2):: RV3280-RV2501C-RV1263 最短路径(2):: RV2363-Rv3285-RV3280 从每一行开始,我需要括号内的数字,第一个蛋白质的名称(第一行中的RV3280)和最后一个蛋白质的名称(第一行中的RV2888C)。 我已经使用Scanner对象为此编写了代码。 try{ Scanner s = new Scanner(new File(args[0])); while (s.hasNextLine()) { s.findInLine(“Shortest path\\((\\d+)\\)::(\\w+).*-(\\w+)”); // at each line, look for this pattern MatchResult result = s.match(); // results from for (int i=1; i<=result.groupCount(); i++) { System.out.println(result.group(i)); } s.nextLine(); // line no. 29 } s.close(); } catch […]

使用while循环和扫描仪validation输入

从指定范围(0,20)的用户获取有效整数并且为int的最佳方法是什么。 如果输入无效的整数打印输出错误。 我想的是: int choice = -1; while(!scanner.hasNextInt() || choice 20) { System.out.println(“Error”); scanner.next(); //clear the buffer } choice = scanner.nextInt(); 这是正确的还是有更好的方法?

将Scanner对象作为参数传递给函数的基本语法

这是我写的非常基本的东西: import java.util.Scanner; public class Projet { /** * @param args * @param Scanner */ public static void main(String[] args) { // TODO Auto-generated method stub System.out.println(“Enter a digit”); Scanner in = new Scanner(System.in); getChoice(Scanner); in.close(); } public static int getChoice(Scanner n){ n = in.nextInt(); return n; } } 这里似乎有什么不对? 我之前有工作,我必须将Scanner类型和参数名称作为参数传递给函数…并且只需使用Scanner类型和参数作为函数的参数在main中调用该函数? – – -编辑 – […]

找出无序的anagramic对子串的数量

我想解决以下问题: https : //www.hackerrank.com/challenges/sherlock-and-anagrams 这是我的代码 import java.util.*; public class Solution { public static boolean check(String s1,String s2) { int [] count1 = new int[26]; for( int i = 0; i < s1.length(); i++ ) { char ch1 = s1.charAt(i); count1[ch1-'a']++; } int [] count2 = new int[26]; for( int i = 0; i < s2.length(); […]

Java.util.scannererror handling

我正在帮助一个有java问题的朋友。 但是,我们遇到了障碍。 我们正在使用Java.Util.Scanner.nextInt()从用户那里获取一个数字,并不断询问用户是否提供了其他内容。 唯一的问题是,我们无法弄清楚如何做错误的handeling。 我们尝试过的: do { int reloop = 0; try { number = nextInt(); } catch (Exception e) { System.out.println (“Please enter a number!”); reloop ++; } } while(reloop != 0); 唯一的问题是,如果你输入的不是数字,这就会无限循环。 有帮助吗?

为什么Scanner会实现Iterator ?

我只是想知道为什么java.util.Scanner实现java.util.Iterator ? Scanner实现remove方法并抛出UnsupportedOperationException 。 但是,在实现接口时,不应该是一个类,履行接口的契约? 实现iterator和添加抛出exception的方法有什么用? 为什么不避免接口的实现并保持简单? 可以认为它被定义为可以扩展Scanner的类可以实现该方法,例如AbstractList有一个抛出UnsupportedOperationException的add方法。 但是AbstractList是一个abstract类,而Scanner是一个final类。 这不是一个糟糕的设计实践吗?