簡體   English   中英

如何在Java中循環遍歷多個輸入行

[英]How to loop through multiple input lines in Java

對於這個問題,我需要找到兩個點之間的距離給定兩個點的坐標和值p使用公式。 我讓程序適用於一個輸入行,但我希望用戶能夠輸入多行並讓程序循環通過它們。 例如:

1.0 1.0 2.0 2.0 1.0

1.0 1.0 2.0 2.0 2.0

可以是輸入,程序將讀取兩條線並給出兩個不同的距離值。 我想知道,如何讓掃描儀讀取多行輸入然后循環它們? 這是我現在的代碼:

public class Driver_lab3{
  public static void main(String[] args){
    Scanner input = new Scanner(System.in);
    System.out.print("Enter 2 coordinate points and a p value, as follows : x1 y1 x2 y2 p : ");
    String coordinatestring = input.nextLine();

    int stringposition = 0;
    double x1 = 0.0;
    double x2 = 0.0;
    double y1 = 0.0;
    double y2 = 0.0;
    double p = 0.0;
    String temp = "temp";
    String spacecheck = "space";
    String subb4decimal = "temp sub";
    String subafterdecimal = "temp sub2";
    int decimalpos = 0;
    int spacepos = 0;
    double distance;


      if(Character.isDigit(coordinatestring.charAt(stringposition))){
        decimalpos = coordinatestring.indexOf('.', stringposition);
        subb4decimal = coordinatestring.substring(stringposition, decimalpos);
        spacepos = coordinatestring.indexOf(' ', decimalpos);
        subafterdecimal = coordinatestring.substring(decimalpos, spacepos);

        temp = subb4decimal + subafterdecimal;
        x1 = Double.parseDouble(temp);
        stringposition = spacepos + 1;

        decimalpos = coordinatestring.indexOf('.', stringposition);
        subb4decimal = coordinatestring.substring(stringposition, decimalpos);
        spacepos = coordinatestring.indexOf(' ', decimalpos);
        subafterdecimal = coordinatestring.substring(decimalpos, spacepos);

        temp = subb4decimal + subafterdecimal;
        y1 = Double.parseDouble(temp);
        stringposition = spacepos + 1;

        decimalpos = coordinatestring.indexOf('.', stringposition);
        subb4decimal = coordinatestring.substring(stringposition, decimalpos);
        spacepos = coordinatestring.indexOf(' ', decimalpos);
        subafterdecimal = coordinatestring.substring(decimalpos, spacepos);

        temp = subb4decimal + subafterdecimal;
        x2 = Double.parseDouble(temp);
        stringposition = spacepos + 1;

        decimalpos = coordinatestring.indexOf('.', stringposition);
        subb4decimal = coordinatestring.substring(stringposition, decimalpos);
        spacepos = coordinatestring.indexOf(' ', decimalpos);
        subafterdecimal = coordinatestring.substring(decimalpos, spacepos);

        temp = subb4decimal + subafterdecimal;
        y2 = Double.parseDouble(temp);
        stringposition = spacepos + 1;

        decimalpos = coordinatestring.indexOf('.', stringposition);
        subb4decimal = coordinatestring.substring(stringposition, decimalpos);
        spacepos = coordinatestring.indexOf(' ', decimalpos);
        subafterdecimal = coordinatestring.substring(decimalpos, spacepos);

        temp = subb4decimal + subafterdecimal;
        p = Double.parseDouble(temp);
        stringposition = spacepos + 1;

        distance = Math.pow(((Math.pow((Math.abs(x1-x2)),p)) + (Math.pow((Math.abs(y1-y2)),p))),(1.0/p));
        System.out.println(distance);
        System.out.println(x1);
        System.out.println(x2);
        System.out.println(y1);
        System.out.println(y2);
        System.out.println(p);

        stringposition = 0;
      }
  }
}

我對java很新,還在學習,所以我很感激我能得到的任何幫助。 提前致謝。

首先你可以使用input.nextDouble()來獲取double值,你可以使用try catch來處理錯誤的輸入,你可以使用for循環來迭代輸入

for (int i = 0; i < numOfInputs; i++){
            try{
                x1 = s.nextDouble();
                y1 = s.nextDouble();
                x2 = s.nextDouble();
                y2 = s.nextDouble();
                p = s.nextDouble();
            } catch (InputMismatchException e) {     
                System.out.println("Incorrect input");
            }

        // your logic here

  distance = Math.pow(((Math.pow((Math.abs(x1-x2)),p)) + (Math.pow((Math.abs(y1-y2)),p))),(1.0/p));
        System.out.println(distance);
        System.out.println(x1);
        System.out.println(x2);
        System.out.println(y1);
        System.out.println(y2);
        System.out.println(p);      
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM