[英]compare 2 sets of arrays in java
創建並填充兩組雙精度值,其中元素的數量和元素本身由用戶指定。 遍歷集合並比較值。
在本實驗中,我們將說順序對於確定集合是否相同很重要。
如果數組的長度和值都相同,則打印組1和組2相等。 否則,打印設置一和設置二不相等。 這是我的代碼,但是當我運行它時,我收到此消息:
Exception in thread "main" java.util.NoSuchElementException: No line found
at java.util.Scanner.nextLine(Scanner.java:1540)
at SetComparison.main(SetComparison.java:23)
我是編碼新手,有人可以告訴我這是什么問題嗎?
import java.util.*;
import java.lang.*;
import java.io.*;
public class SetComparison
{
public static void main (String[] args) throws java.lang.Exception
{
Scanner scnr = new Scanner(System.in);
String str = scnr.nextLine();
String[] allNums = str.split("\\s+");
int array1Length = Integer.valueOf(allNums[0]);
int array2Length = Integer.valueOf(allNums[array1Length + 1]);
double array1[] = new double[array1Length];
double array2[] = new double[array2Length];
for (int i = 0; i < array1Length; i++) {
array1[i] = Double.valueOf(allNums[i + 1]);
}
for (int i = 0; i < array2Length; i++) {
array2[i] = Double.valueOf(allNums[array1Length + i + 2]);
}
if (Arrays.equals(array1, array2)) {
System.out.println("set one and set two are equal");
} else {
System.out.println("set one and set two are not equal");
}
}
}
使用掃描儀,您需要檢查hasNextLine()是否存在下一行
所以循環變成
while(scnr.hasNextLine()){
str=scnr.nextLine();
//...
}
讀者在EOF上返回null
當然在這段代碼中,這取決於輸入的格式是否正確
您正在調用nextLine(),並且在沒有行時會引發異常。
嘗試以下修改的代碼:
package com.test;
import java.util.Arrays;
import java.util.Scanner;
public class SetComparison {
public static void main(String[] args) throws java.lang.Exception {
Scanner scnr = new Scanner(System.in);
String str = scnr.nextLine();
String[] allNums = str.split("\\s+");
int array1Length = Integer.valueOf(allNums[0]);
int array2Length = Integer.valueOf(allNums[1]); // Modified
double array1[] = new double[array1Length];
double array2[] = new double[array2Length];
for (int i = 0; i < array1Length; i++) {
array1[i] = Double.valueOf(allNums[i + 2]); // Modified
}
print(array1);
for (int i = 0; i < array2Length; i++) {
array2[i] = Double.valueOf(allNums[array1Length + i + 2]);
}
print(array2);
if (Arrays.equals(array1, array2)) {
System.out.println("set one and set two are equal");
} else {
System.out.println("set one and set two are not equal");
}
}
private static void print(double[] array) {
for (double d : array) {
System.out.print(d + " ");
}
System.out.println();
}
}
輸出:
2 2 3 4 3 4
3.0 4.0
3.0 4.0
set one and set two are equal
輸出:
2 2 3 4 3 5
3.0 4.0
3.0 5.0
set one and set two are not
我剛剛檢查過您的代碼也可以:
輸出:
2 3 4 2 3 4
3.0 4.0
3.0 4.0
set one and set two are equal
2 3 4 2 3 5
3.0 4.0
3.0 5.0
set one and set two are not equal
在我的代碼中:
在您的代碼中:
兩者對我來說都很好。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.