質問: これを修正するにはどうすればよいですか? 値を入力するとコードは機能しますが、スキャナーを使用して値を読み取ると、都市の数を入力すると入力の読み取りが停止し、実行時例外がスローされます。
1つではなく2つのスキャナーを使用しようとしました.1つはdouble用、もう1つは整数用で、「doubleからintへの損失のある変換」が表示されるため、それがあなたのやり方ではないと確信しています。誰か助けてくれませんか?参考までに、私はUXアーキテクトであり、これは初めてです。したがって、どんな助けも大歓迎です。
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]);
}
}