标签: java.util.scanner

如何使用java在Array中获取用户输入?

如何使用Java在Array中获取用户输入?即我们没有在我们的程序中自己初始化它,但用户将给它的价值..请指导!!

java java.util.scanner

6
推荐指数
2
解决办法
25万
查看次数

Java - 在将用户输入读入数组时跳过一行(for循环)

这是我的代码 - 目的是为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 java.util.scanner

6
推荐指数
1
解决办法
1315
查看次数

为什么Scanner#nextInt for for循环继续抛出异常?

我一直在学习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)

我希望你们理解我的问题.

java java.util.scanner

6
推荐指数
1
解决办法
720
查看次数

Integer.parseInt(scanner.nextLine())vs scanner.nextInt()

我的教授倾向于做以下事情来从用户那里得到一个数字:

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)

java performance integer user-input java.util.scanner

6
推荐指数
1
解决办法
3万
查看次数

生成Math.random数字的问题,0或1

我已经在这个网站上看到了很多次发布的这个问题,并且相信我已经浏览了很多这么多的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)

java random java.util.scanner

6
推荐指数
4
解决办法
4万
查看次数

java.util.Scanner挂在hasNext()上

我在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 sockets serversocket hang java.util.scanner

6
推荐指数
1
解决办法
1004
查看次数

使用java scanner类在最后读取空白区域

我用一个简单的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.它将在最后摆脱空白空间.我也试过用hasNextnext.请原谅我的格式,我正在手机上编辑.

java java.util.scanner

6
推荐指数
1
解决办法
5563
查看次数

扫描程序构造函数导致bufferedReader返回null

我想做 -

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位读者吗?

java null constructor bufferedreader java.util.scanner

5
推荐指数
1
解决办法
136
查看次数

当我输入"完成"时,我的程序不会停止

我之前问了一个问题,从那以后我编辑了我的代码,但现在我的代码不会停止,当我读完它不会停止.

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"时,我的代码不会停止.谁知道我可能做错了什么?

java for-loop arraylist while-loop java.util.scanner

5
推荐指数
1
解决办法
285
查看次数

是否必须关闭扫描仪?

使用下面的代码,我可以使用/不使用扫描仪关闭方法生成相同的输出.

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 java.util.scanner

5
推荐指数
1
解决办法
250
查看次数