如何使用Java在Array中获取用户输入?即我们没有在我们的程序中自己初始化它,但用户将给它的价值..请指导!!
这是我的代码 - 目的是为x个患者输入一些基本信息(年龄,姓名,性别).
public static void main(String[] args) {
int numPatients = 2;
int[] age = new int[numPatients];
String[] gender = new String[numPatients];
String[] name = new String[numPatients];
Scanner in = new Scanner(System.in);
/*
* Obtaining patients details: name, gender, age
* First create a Scanner input variable to read the data
*/
for (int i = 0; i < numPatients; i++)
{
System.out.println("Enter name of patient " + (i+1));
name[i] = in.nextLine();
System.out.println("Enter gender (male/female) of patient " + …Run Code Online (Sandbox Code Playgroud) 我一直在学习JAVA,我对代码有一点疑问:
class apple {
public static void main(String[] args) {
int[] num = new int[3];
Scanner input = new Scanner(System.in);
for (int i = 0; i < num.length; i++) {
try {
num[i] = input.nextInt();
} catch (Exception e) {
System.out
.println("Invalid number..assigning default value 20");
num[i] = 20;
}
}
for (int i = 0; i < num.length; i++) {
System.out.println(num[i]);
}
}
}
Run Code Online (Sandbox Code Playgroud)
我编写了一个小程序来处理异常,如果用户输入不是Int抛出异常并分配默认值.如果我把扫描器语句放在for循环中,它工作正常,但如果我把它带到它之外,它会分配抛出异常的相同值,即我输入的是char而不是int.但是如果我输入所有整数,它会在数组中分配正确的值.
Scanner input = new Scanner(System.in);
Run Code Online (Sandbox Code Playgroud)
我希望你们理解我的问题.
我的教授倾向于做以下事情来从用户那里得到一个数字:
Scanner scanner = new Scanner(System.in);
Integer.parseInt(scanner.nextLine());
Run Code Online (Sandbox Code Playgroud)
与简单的做法相比,有什么好处scanner.nextInt()?
java.util.Scanner.java 有以下内容:
public int nextInt() {
return nextInt(defaultRadix);
}
public int nextInt(int radix) {
// Check cached result
if ((typeCache != null) && (typeCache instanceof Integer)
&& this.radix == radix) {
int val = ((Integer)typeCache).intValue();
useTypeCache();
return val;
}
setRadix(radix);
clearCaches();
// Search for next int
try {
String s = next(integerPattern());
if (matcher.group(SIMPLE_GROUP_INDEX) == null)
s = processIntegerToken(s);
return Integer.parseInt(s, radix);
} catch (NumberFormatException nfe) {
position = matcher.start(); …Run Code Online (Sandbox Code Playgroud) 我已经在这个网站上看到了很多次发布的这个问题,并且相信我已经浏览了很多这么多的YouTube视频而且没有任何东西最终为我工作.正如标题所说,我想要一个随机数,0或1,然后将返回到main(),如下面的代码所示.
import java.util.Scanner;
public class Exercise8Lab7 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int numFlips = 0;
int heads = 0;
int tails = 0;
String answer;
System.out.print("Please Enter The Number Of Coin Tosses You Want: ");
numFlips = input.nextInt();
for(int x = 1;x <= numFlips; x++){
if(coinToss() == 1){
answer = "Tails";
tails++;
}
else{
answer = "Heads";
heads++;
}
System.out.print("\nCoin Toss " + x + ": " + answer);
}
System.out.println("\n\n====== Overall Results …Run Code Online (Sandbox Code Playgroud) 我在Scanner班上遇到一个非常奇怪的问题.我正在使用特殊的EOF令牌Scanner来读取消息Socket.如果客户端一次写入所有请求,或者请求有数据,那么一切正常,但阻塞hasNext()操作在服务器上挂起,反过来客户端,当消息以块的形式写入时,下一个令牌应该是空字符串.
什么会导致这个?我该如何避免这种情况?
这是我正在尝试做的简化版本,\n用于测试目的,假设分隔符可以是任何字符串.
服务器代码:
ServerSocketChannel serverChannel = null;
try {
serverChannel = ServerSocketChannel.open();
ServerSocket serverSocket = serverChannel.socket();
serverSocket.bind(new InetSocketAddress(9081));
SocketChannel channel = serverChannel.accept();
Socket socket = channel.socket();
InputStream is = socket.getInputStream();
Reader reader = new InputStreamReader(is);
Scanner scanner = new Scanner(reader);
scanner.useDelimiter("\n");
OutputStream os = socket.getOutputStream();
Writer writer = new OutputStreamWriter(os);
while (scanner.hasNext()) {
String msg = scanner.next();
writer.write(msg);
writer.write('\n');
writer.flush();
}
} catch (IOException e) {
e.printStackTrace();
} finally …Run Code Online (Sandbox Code Playgroud) 我用一个简单的java程序帮助我的姐妹,我很难过.他们只学习了扫描器类来读取文件内容,所以我认为他们应该使用扫描器类.每行包含字母和可能的空格,我们希望将每一行存储在一个数组中.这工作正常和花花公子,直到其中一行包含如下内容:
abcde f(f后的空格应作为行的一部分读入).
但是,scanner.nextLine()似乎无视这最后的空白.我想我可以将扫描仪分隔符设置为\n:
scanner.useDelimiter("\n")
Run Code Online (Sandbox Code Playgroud)
然后scanner.Next()从那里使用,但这仍然似乎不起作用.我已经google了一下,看了几个stackoverflow问题.这里的这个问题似乎表明,使用scanner类不容易做到这一点:如何用scanner.next()读取空格
有任何想法吗?我觉得我有一种轻松的方式可以俯瞰.
这就是我在阅读的内容:
While(scanner.hasNextLine(){
String nextLine = scanner.nextLine();
Run Code Online (Sandbox Code Playgroud)
使用上面的例子,我的字符串将会读取abcde f.它将在最后摆脱空白空间.我也试过用hasNext和next.请原谅我的格式,我正在手机上编辑.
我想做 -
BufferedReader br = new BuffereReader(file);
Scanner s = new Scanner(br);
sys.out(s.next());
sys.out(buffReader.readLine());
Run Code Online (Sandbox Code Playgroud)
我期望发生的是现在在文件上有两个独立的读者指向不同的地方.但是,buffReader在readLine上返回null,而扫描程序似乎工作正常.我有可能拥有像我想要的2位读者吗?
我之前问了一个问题,从那以后我编辑了我的代码,但现在我的代码不会停止,当我读完它不会停止.
public class Done {
public static void main(String[] args){
Scanner kb = new Scanner(System.in);
ArrayList<String> sal = new ArrayList<String>();
int count = 0;
while (true){
sal.add(kb.next());
if (sal.equals("done"))
break;
count++;
}
display(sal);
displayb(sal);
}
public static void display(ArrayList<String> sal){
for (int i=0; i<sal.size(); i++)
System.out.print(sal.get(i)+ " ");
System.out.println();
}
public static void displayb(ArrayList<String> sal){
for (int z = sal.size(); z >= 1; z--)
System.out.print(sal.get(z-1) + " ");
System.out.println();
}
}
Run Code Online (Sandbox Code Playgroud)
当我输入短语"done"时,我的代码不会停止.谁知道我可能做错了什么?
使用下面的代码,我可以使用/不使用扫描仪关闭方法生成相同的输出.
import java.util.Scanner;
class CheckPassFail
{
//Write a program called CheckPassFail which prints "PASS" if the int variable "mark" is more than or equal to 50; or prints "FAIL" otherwise.
static int k;
static String str;
public static void main(String arg[])
{
System.out.println("Enter the marks : ");
Scanner typein = new Scanner(System.in);
str = typein.nextLine();
typein.close(); //Scanner Close
k = Integer.parseInt(str);
if(k>=50)
{
System.out.println("PASS");
}
else
{
System.out.println("FAIL");
}
}
}
Run Code Online (Sandbox Code Playgroud) java ×10
arraylist ×1
constructor ×1
for-loop ×1
hang ×1
integer ×1
null ×1
performance ×1
random ×1
serversocket ×1
sockets ×1
user-input ×1
while-loop ×1