当前位置: 首页 > 知识库问答 >
问题:

如何在Java中循环遍历多个输入行

钱稳
2023-03-14

对于这个问题,我需要用一个公式求出两个点之间的距离,给定两个点的坐标和值p。我让程序为一个输入行工作,但我希望用户能够输入多行,并让程序循环通过它们。例如:

1.0 1.0 2.0 2.0 1.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相当陌生,还在学习,所以我很感激我能得到的任何帮助。提前谢了。

共有1个答案

贺方伟
2023-03-14

首先,可以使用input.nextdouble()获取double值,可以使用trycatch处理不正确的输入,还可以使用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);      
}
 类似资料:
  • 问题内容: 我想知道是否有这样一种方法来遍历java中每个循环的扩展扩展的多个集合。 所以像这样: 谢谢 问题答案: 您可以使用Guava的:

  • 我的Flutter项目中有一个Dart枚举,如下所示: 如果我有一些随机枚举状态,如,我如何迭代到下一个枚举(而不需要做一些事情,如用开关语句映射它们)? 我在这个,这个和这个的帮助下找到了答案,所以我把它贴在下面。

  • 我正在MST上的CLRS中尝试ch23,这里有一个问题: 给定一个图G和一个最小生成树T,假设我们减少不在T中的一条边的权重。给出了在修改图中求最小生成树的算法。 我找到的一个解决方案是在中添加此新更改的边,然后在T中创建一个简单的循环,遍历此循环并删除此循环中的最大权重边,瞧,找到了新更新的MST! 我的问题是,如何在这个简单循环中只遍历节点?因为如果我在中从这个新添加的边的一个endpoint

  • 在给定的数组中,我想计算左边唯一的连续值,这些值小于或等于每个值。 例如在下面的数组中,第一个索引值是100,所以没有比它更小的值,它将是1。对于值70,有60比它小,所以计数是2,依此类推。 注意:这应该使用stack来完成(这是一个stack实践问题)。 我的方法是: 我试图用这种方式解决: 在数组中运行循环,每次向堆栈添加数组值 问题:现在的问题是:因为它第一次会正常工作,但下一次不会。 问

  • 任何帮助都是非常感谢的

  • 问题内容: 我正在尝试将使用OpenCV收到的先前答案中的C++方法转换为使用OpenCV Java绑定的Java C ++代码: 我不知道如何像在C代码中那样遍历变量。以下是到目前为止我得到的: Java代码: 我经历了API,似乎确实有获取方法,但是我什么也不能调用。 问题答案: 如果确实是 灰色 ,则可能是以下类型: 我没有设置环境来测试此代码。有关更多信息,请检查此线程。 如果您使用的是