我想创建一个从STDIN静默读取密码的Java程序.我的意思是,不向终端输出任何按下的字符,并将其隐藏在命令行历史记录和操作系统进程列表中ps.
我正在尝试将我的应用程序中一个经常使用的大部分内容重新分解为单独的方法,以使其更易于维护.
其中一些方法要求用户输入并进行输入验证,所以我使用了扫描仪和System.in但是当我关闭扫描仪时我也关闭了System.in
所以我的问题是,我是否可以通过使用CloseShieldInputStream屏蔽它来阻止System.in关闭,还是我应该开始将Scanner传递给方法?
我正在使用Scanner扫描Java中的.txt文档.但是,当我在Eclipse中打开.txt文档时,我注意到某些字符未被识别,并且它们被替换为如下所示:
�
这些字符甚至不允许我扫描文件
while(scan.hasNext)
Run Code Online (Sandbox Code Playgroud)
自动返回false(如果这些字符不存在,那么我可以很好地扫描文档).
那么,我如何让Eclipse识别这些字符以便我可以扫描?我无法手动删除它们,因为文档非常大.谢谢.
java eclipse character-encoding special-characters java.util.scanner
我有一个创建多个Integer对象的类,并将它们放入LinkedList如下所示:
public class Shares<E> implements Queue<E> {
protected LinkedList<E> L;
public Shares() {
L = new LinkedList<E>();
}
public boolean add(E price) {
System.out.println("How many of these shares would you like?");
Scanner scanInt;
scanInt = new Scanner(System.in);
Integer noShares = scanInt.nextInt();
for (int i = 0; i < noShares; i++) {
L.addLast(price);
}
scanInt.close();
return true;
}
}
Run Code Online (Sandbox Code Playgroud)
我有一个应用程序从控制台扫描输入"添加",如果找到,调用add如下所示的方法:
public class Application {
private static Scanner scan;
public static <E> void main(String[] args) { …Run Code Online (Sandbox Code Playgroud) 任何人都可以解释我的类之间的区别BufferedReader,FileReader以及Scanner?当我想阅读文本文件时使用哪一个?
我是java的新手,所以如果这听起来绝对愚蠢,请不要降价
好吧如何使用单个扫描仪对象输入此内容
五
你好,你怎么样
欢迎来到我的世界
6 7
对于那些建议的人
scannerobj.nextInt->nextLine->nextLine->nextInt->nextInt,,,
Run Code Online (Sandbox Code Playgroud)
检查出来,它不起作用!
谢谢
我必须得到一个字符串输入和一个整数输入,但是输入顺序应该是整数首先出现然后应该要求用户输入字符串
Scanner in = new Scanner(System.in);
input = in.nextLine();
k = in.nextInt();
in.close();
Run Code Online (Sandbox Code Playgroud)
上面的代码工作正常,但如果我首先采用整数输入,如下面的代码
Scanner in = new Scanner(System.in);
k = in.nextInt();
input = in.nextLine();
in.close();
Run Code Online (Sandbox Code Playgroud)
然后它抛出java.lang.ArrayIndexOutOfBoundsException.
这是我的源文件的完整代码:
import java.util.Scanner;
Run Code Online (Sandbox Code Playgroud)
public class StringSwap {
public static void main(String args[]) {
String input;
int k;
Scanner in = new Scanner(System.in);
k = in.nextInt();
input = in.nextLine();
in.close();
int noOfCh = noOfSwapCharacters(input);
originalString(input, noOfCh, k);
}
public static int noOfSwapCharacters(String s) {
char cS[] = s.toCharArray();
int i = 0, postCounter = …Run Code Online (Sandbox Code Playgroud) 执行摘要:\R Java中是否存在任何警告/已知问题(或其他正则表达式模式)Scanner(特别是关于内部缓冲区的边界条件)?
细节:由于我想在潜在的多平台输入文件上进行一些多线模式匹配,我使用了模式\R,根据Patternjavadoc是:
任何Unicode换行序列都相当于
\u000D\u000A|[\u000A\u000B\u000C\u000D\u0085\u2028\u2029]
无论如何,我注意到在我的一个测试文件中,应该解析一个十六进制转储块的循环被缩短了.经过一些调试后,我注意到它结束的那一行是Scanner内部缓冲区的结束.
这是我写的一个测试程序来模拟这种情况:
public static void main(String[] args) throws IOException {
testString(1);
testString(1022);
}
private static void testString(int prefixLen) {
String suffix = "b\r\nX";
String buffer = new String(new char[prefixLen]).replace("\0", "a") + suffix;
Scanner scanner = new Scanner(buffer);
String pattern = "b\\R";
System.out.printf("=================\nTest String (Len=%d): '%s'\n'%s' found with horizon=0 (w/o bound): %s\n", buffer.length(), convertLineEndings(
buffer), pattern, convertLineEndings(scanner.findWithinHorizon(pattern, 0)));
System.out.printf("'X' found with horizon=1: %b\n", scanner.findWithinHorizon("X", 1) != null);
scanner.close(); …Run Code Online (Sandbox Code Playgroud) 我正在尝试创建一个程序,它允许用户使用扫描仪将值输入到数组中.
但是,当程序要求学生的近亲时,它不会让用户输入任何内容并立即结束该程序.
以下是我所做的代码:
if(index!=-1)
{
Function.print("Enter full name: ");
stdName = input.nextLine();
Function.print("Enter student no.: ");
stdNo = input.nextLine();
Function.print("Enter age: ");
stdAge = input.nextInt();
Function.print("Enter next of kin: ");
stdKin = input.nextLine();
Student newStd = new Student(stdName, stdNo, stdAge, stdKin);
stdDetails[index] = newStd;
}
Run Code Online (Sandbox Code Playgroud)
我尝试过使用next(); 但它只会取用户输入的第一个字而不是我想要的.反正有没有解决这个问题?
说我有以下示例代码:
Scanner scan1 = new Scanner(System.in); // declaring new Scanner called scan1
int x = scan1.nextInt(); // scan for user input and set it to x
System.out.println(x); // print the value of x
scan1.close(); // closes the scanner (I don't know exactly what this does)
Scanner scan2 = new Scanner(System.in); // declaring new Scanner called scan1
int y = scan2.nextInt(); // scan for user input and set it to y
System.out.println(y); // print the value of y
Run Code Online (Sandbox Code Playgroud)