Java 使用两台扫描仪。。一个表示整数,一个表示双精度,这导致我的代码无法工作。

Java 使用两台扫描仪。。一个表示整数,一个表示双精度,这导致我的代码无法工作。,java,Java,问题:我如何解决这个问题?当我输入值时,代码会工作,但当我使用扫描仪读取值时,在我输入城市数并引发运行时异常后,它会停止读取输入 我试着用两台扫描仪而不是一台。。一个代表double,一个代表integer,我很确定这不是你要做的,因为我看到了“从double到int的有损转换”。有人能帮忙吗?仅供参考,我是一名用户体验架构师,对此我是新手。因此,任何帮助都将不胜感激 import java.util.*; import java.lang.Math; public class Centralc

问题:我如何解决这个问题?当我输入值时,代码会工作,但当我使用扫描仪读取值时,在我输入城市数并引发运行时异常后,它会停止读取输入

我试着用两台扫描仪而不是一台。。一个代表double,一个代表integer,我很确定这不是你要做的,因为我看到了“从double到int的有损转换”。有人能帮忙吗?仅供参考,我是一名用户体验架构师,对此我是新手。因此,任何帮助都将不胜感激

import java.util.*;
import java.lang.Math;
public class Centralcity {


        public static void main(String[] args){


            int numcities;
            int x = 0;
            int y = 0;
            double shortest = 0;
            double distance1 = 0;
            double distance2 = 0;
            int closestX1=0, closestX2=0, closestY1 =0 , closestY2 = 0;

            Scanner scanner = new Scanner(System.in);
            System.out.println("Enter the number of cities: " );
            numcities = scanner.nextInt();


            double[] xcor=new double[numcities];
            double[] ycor=new double[numcities];
            double[][] distance= new double[numcities][numcities];
            double[] sumdistance= new double[numcities];
            double[] temp= new double[numcities];


                //numcities = 5;
                //double xcor[]=new double[] {2.5,5.1,1,5.4,5.5};

                //double ycor[]=new double[] {5,3,9,54,2.1};

          for(int i = 0; i<numcities; i++)
            {
                for(int j = 0; j<numcities; j++)
                {      
                System.out.println("Enter coordinates of the city:");
                xcor[i]=scanner.nextDouble();
                xcor[j]=scanner.nextDouble();
                ycor[i]=scanner.nextDouble();
                ycor[j]=scanner.nextDouble();
                }
                }

             for(int i = 0; i<numcities; i++)
            {
                for(int j = 0; j<numcities; j++)
                {                    

                distance[i][j]=Math.pow((Math.pow(xcor[i]-xcor[j], 2)) + (Math.pow(ycor[i]-ycor[j], 2)), 0.5);
                sumdistance[i]+=distance[i][j];
                }

            }

             temp=sumdistance;
              double temp1;

        for(int i = 0; i < temp.length; i++)
        {
            for(int j = 1; j < (temp.length -i); j++)
            {
                        if(temp[j-1] > temp[j])
                {
                    temp1 = temp[j-1];
                    temp[j-1]=temp[j];
                    temp[j]=temp1;
                }
            }
        }   

      double finl=0;
        for(int i = 0; i <numcities; i++)

             {
                 if(sumdistance[i]==temp[0])
                    {
                        finl=i;               

                    }               
            }
             System.out.println("The Central City coordinates are: " +xcor[finl]+","+ycor[finl]);

        }

    }
import java.util.*;
导入java.lang.Math;
公共类中心性{
公共静态void main(字符串[]args){
国际货币基金组织;
int x=0;
int y=0;
双最短=0;
双距离1=0;
双距离2=0;
int closestX1=0,closestX2=0,closestY1=0,closestY2=0;
扫描仪=新的扫描仪(System.in);
System.out.println(“输入城市数量:”);
numcities=scanner.nextInt();
double[]xcor=新的双精度[numcities];
double[]ycor=新的双[数量];
双精度[][]距离=新的双精度[numcities][numcities];
double[]sumdestance=新的double[numcities];
双[]温度=新双[数值];
//数量=5;
//双xcor[]=新的双[]{2.5,5.1,1,5.4,5.5};
//双ycor[]=新的双[]{5,3,9,54,2.1};

对于(int i=0;i我假设您正在告诉我们您收到的错误是“从双精度到int的有损转换”。您无法将双精度值转换为int值。您的输入数据或读取数据的方式应该更改


关于无法将double转换为int的原因的问答:

将变量finl更改为int-type。例如:

 int finl=0;
    for(int i = 0; i <numcities; i++)

         {
             if(sumdistance[i]==temp[0])
                {
                    finl=i;               

                }               
        }
         System.out.println("The Central City coordinates are: "       +xcor[finl]+","+ycor[finl]);
int finl=0;

对于(int i=0;i异常是什么?它们的存在是有原因的。输入数据也会有帮助的。我想我只看到一个
扫描仪
…据我所知,这段代码中没有任何东西会给出错误消息。这是给出错误的实际代码吗?你能发布实际的错误消息吗?