Java 用空格和换行符分隔的用户输入

Java 用空格和换行符分隔的用户输入,java,Java,我已经生成了一段代码,它得到4个输入,并计算所有输入的平方根 int i; System.out.print("print numbers here:"); int[] arr = new int[4]; Scanner in = new Scanner(System.in); for (i = 0; i < arr.length; i++ ){ arr[i] = in.nextInt(); } for (i = a

我已经生成了一段代码,它得到4个输入,并计算所有输入的平方根

    int i;
    System.out.print("print numbers here:");
    int[] arr = new int[4];
    Scanner in =  new Scanner(System.in);
    for (i = 0; i < arr.length; i++ ){
        arr[i] = in.nextInt();
    }
    for (i = arr.length; i > 0; --i){
        double s =Math.sqrt(arr[i-1]);
        System.out.println(s);
    }
1427是第一个数字,0是第二个数字,以此类推。。我是java和编程新手,我没有任何想法。如果可以的话,请帮助我。
提前谢谢

如果要使用空格字符(空格和换行符)分割答案,请尝试使用Java中的.split函数。在您的情况下,您可以将从用户收到的输入作为字符串,然后执行以下操作:

String[] inputVariables = string.split("\\s");
(请注意\s表示所有空白字符,“string”是您收到的输入)
现在您有了从用户接收的输入的字符串数组。然后,您可以对每个字符串使用Integer.parseInt将它们从字符串转换为整数,现在您已经准备好四个整数进行平方根化。

您可以尝试以下方法

for (i = 0; i < arr.length; i++ ){
   try{
      String []nos = in.nextLine().split("\\s+");
      if(nos.length > 0)
      {
          for(String no:nos)
            arr[i] = Integer.parseInt(no);  
      }else{
          arr[i] = Integer.parseInt(in.nextLine());
      }
   }catch(Exception e){
      i--;
   }
}
for(i=0;i0)
{
用于(字符串编号:个)
arr[i]=整数.parseInt(否);
}否则{
arr[i]=Integer.parseInt(in.nextLine());
}
}捕获(例外e){
我--;
}
}
将您的呼叫替换为。这将检索下一个单词,空格字符作为分隔符(换行符和空格)。这将允许任何数量的空间、空行等

示例

System.out.print("print numbers here:");
int[] arr = new int[4];
Scanner in =  new Scanner(System.in);
for (int i = 0; i < arr.length; i++){
    int num;
    try {
        num = Integer.parseInt(in.next()); // get input
    } catch (NumberFormatException e) {
        // invalid number
    }
    arr[i] = num;
}
for (int i = arr.length; i > 0; i--) {
    double s = Math.sqrt(arr[i-1]);
    System.out.println(s);
} // this is printing the square roots in reverse order, you may want to change
// that to avoid confusion
System.out.print(“在此处打印数字:”);
int[]arr=新的int[4];
扫描仪输入=新扫描仪(系统输入);
对于(int i=0;i0;i--){
双s=数学sqrt(arr[i-1]);
系统输出打印项次;
}//这是按相反顺序打印平方根,您可能需要更改
//这是为了避免混淆

您能清楚地解释您的问题吗?您是否在一行中输入所有4个数字?还是4行?有不同的行,请说明2行是空的。您是如何输入这些数字的?因为如果按enter键,将生成结果。你是在做复制和粘贴,因为我认为扫描仪不会处理复制和粘贴。请参见此处:@Garik换行符被视为空白。如果一行中有多个输入,该怎么办?@Garik由for loop处理。这确实有效,尽管我还不了解全部要点,但我现在将对此进行探讨。再想想你。
System.out.print("print numbers here:");
int[] arr = new int[4];
Scanner in =  new Scanner(System.in);
for (int i = 0; i < arr.length; i++){
    int num;
    try {
        num = Integer.parseInt(in.next()); // get input
    } catch (NumberFormatException e) {
        // invalid number
    }
    arr[i] = num;
}
for (int i = arr.length; i > 0; i--) {
    double s = Math.sqrt(arr[i-1]);
    System.out.println(s);
} // this is printing the square roots in reverse order, you may want to change
// that to avoid confusion