[英]Adding elements to two different arrays in java
我正在嘗試將元素添加到兩個數組。 我聲明了雙精度數組,以便它們也接受十進制數。
我從用戶那里得到7個元素並添加它們。 如果用戶只給出6個元素而不是7個元素,它將等待直到給出第7個元素。
如果用戶僅給出6個元素而不是7,則必須將第7個元素的位置設為“ 0”,然后將這些元素相加並打印總和。 它不能等待第七元素。 為此,我該怎么辦?
Scanner in = new Scanner(System.in);
double a[] =new double[100];
double b[] =new double[100];
double suma=0,sumb=0;
for(int i=0;i<7;i++)
{
a[i]=in.nextDouble();
suma=suma+a[i];
}
for(int i=0;i<7;i++)
{
b[i]=in.nextDouble();
sumb=sumb+b[i];
}
我們可以使用這樣的東西
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String strArr[] = br.readLine().split(" ");
double a[]=new double[100];
double suma=0;
for(int i=0;i<strArr.length;i++)
{
a[i] = Double.parseDouble(strArr[i]);
suma += a[i];
}
這樣,如果僅提供6個值,則數組將具有從索引0到5的值,其余所有值將保持為0
您可以使用特定的定界符來排除默認的新行。 這樣,您可以使用hasNextDouble
循環直到到達行尾。
Scanner in =new Scanner(System.in);
double a[]=new double[10];
double b[]=new double[10];
double suma=0,sumb=0;
//Use space as delimiter only, this accept a regex
in.useDelimiter("[ ]+")
.useLocale(Locale.ENGLISH);
//Loop until the line is out of value (separated by spaces)
for(int i=0; in.hasNextDouble(); i++)
{
a[i]=in.nextDouble();
suma=suma+a[i];
}
//Consume the newline still in the buffer
in.nextLine();
//Loop until the line is out of value (separated by spaces)
for(int i=0; in.hasNextDouble(); i++)
{
b[i]=in.nextDouble();
sumb += b[i];
}
System.out.println("Sum of " + Arrays.toString(a) + " = " + suma);
System.out.println("Sum of " + Arrays.toString(b) + " = " + sumb);
范例:
[1.1、5.4、0.0、0.0、0.0、0.0、0.0、0.0、0.0、0.0]的總和= 6.5
[4.8、7.4、1.5、4.8、0.1、0.0、0.0、0.0、0.0、0.0]的總和= 18.6
請注意,如果使用文件,則可以使用兩個循環讀取所有內容並將其放入列表中,從而可以對此進行改進。
Scanner in = new Scanner("1.4 2.2 3.1\n1.8 7.4 24.5");
List<List<Double>> arrays = new ArrayList<>();
in.useDelimiter("[ ]+")
.useLocale(Locale.ENGLISH);
List<Double> tmp;
do{
tmp = new ArrayList<>();
arrays.add(tmp);
while (in.hasNextDouble()) {
tmp.add(in.nextDouble());
}
System.out.println(tmp);
System.out.println(tmp.stream().mapToDouble(d -> Double.valueOf(d)).sum());
} while (in.hasNextLine() && in.nextLine() != null);
[1.4,2.2]
3.6
[1.8、7.4、24.5]
33.7
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.