在一行java中读取3个整数

时间:2016-05-07 15:15:44

标签: java

帮我找到一种方法从一行读取用户3整数,然后将每个saparately视为a,b,c ..请快速,因为我曾尝试读取整行,但我想处理每个整数后来的陈述

import java.util.Scanner;

public class MHDKhaledTotonji_301300797 {
    public static void main(String[] args){
        Scanner input=new Scanner(System.in);
        int M,a,b,c;
        System.out.println("Please, insert the normal dose in ml");
        M = input.nextLine();
    }
}

3 个答案:

答案 0 :(得分:2)

do
{ 
    Application.DoEvents(); // handle Windows Forms events

    byteRead = COMport.ReadByte();

} while (byteRead != 75);   // ASCII K = 75

需要:1 2 3

答案 1 :(得分:1)

nextLine()返回String,因此M应定义为String

Java命名约定通常声明变量应以小写字母开头,因此M应为m

至于在一行中从用户获取3个整数的任务,您有多个选择,这取决于您希望的严格程度以及您需要多少错误处理。

  1. 对于非常简单的解决方案,没有错误处理(在错误输入时杀死程序),Scanner就是答案。可以添加错误处理,但是很麻烦。

    Scanner in = new Scanner(System.in);
    System.out.println("Please, insert the normal dose in ml");
    int a = input.nextInt();
    int b = input.nextInt();
    int c = input.nextInt();
    
  2. 另一种解决方案可能是读取该行,就像您尝试的那样,然后拆分该行并解析值。多一点代码,但强制用户在一行中输入所有3,而#1解决方案没有。

    Scanner in = new Scanner(System.in);
    System.out.println("Please, insert the normal dose in ml");
    String line = input.nextLine();
    String[] values = line.split(" ");
    int a = Integer.parseInt(values[0]);
    int b = Integer.parseInt(values[1]);
    int c = Integer.parseInt(values[2]);
    
  3. 为了更好地控制用户的行,可以使用正则表达式。这是完全错误处理。

    Scanner in = new Scanner(System.in);
    Pattern p = Pattern.compile("\\s*(\\d+)\\s+(\\d+)\\s+(\\d+)\\s*");
    int a = 0, b = 0, c = 0;
    for (;;) {
        System.out.println("Please, insert the normal dose in ml");
        String line = input.nextLine();
        Matcher m = p.matcher(line);
        if (m.matches())
            try {
                a = Integer.parseInt(m.group(1));
                b = Integer.parseInt(m.group(2));
                c = Integer.parseInt(m.group(3));
                break;
            } catch (Exception e) {/*fall thru to print error message*/}
        System.out.println("** Bad input. Type 3 numbers on one line, separated by space");
    }
    

答案 2 :(得分:0)

使用input.nextInt()代替input.nextLine()。这也是错误的,因为input.nextLine()会返回String,您应该parseinteger

简单地将代码更改为:

M = input.nextInt();
a = input.nextInt();
b = input.nextInt();
c = input.nextInt();

请记住input.nextInt()忽略包括换行符在内的每个空格,因此您无需担心从相同或不同的行读取。