use*_*817 0 java arrays methods boolean while-loop
问题:编写一个读取实数列表的程序.程序结束后,它应该只打印出唯一的数字.也就是说,只有列表中出现一次的数字.如果列表中有超过50个唯一编号,那么您应该只打印前50个.
import java.util.*;
import java.io.*;
import java.util.Arrays;
public class Hmwk {
public static void main(String[] args) throws FileNotFoundException {
Scanner input=new Scanner (new File ("input.txt"));
int n = 0;
final int MAX_SIZE = 50;
double[] numbersArray;
while (input.hasNextDouble() && n<MAX_SIZE){
double in = input.nextDouble();
if (inList(in,numbersArray))
numbersArray[n]=in;
n++;
}
printReport(numbersArray);
}
public static boolean inList(double number, double[] list){
for (double i : list) {
if (i == number){
return false;
}
else
return true;
}
}
public static void printReport(double[] list) {
System.out.printf("The unique numbers were", Arrays.toString(list));
}
}
Run Code Online (Sandbox Code Playgroud)
我收到错误,说numberArray可能尚未初始化.我也得到一个错误,说我的布尔方法inList必须返回一个类型布尔值,这让我困惑,因为我有两个选项返回true或false.任何帮助深表感谢.
实际上,你的变量
double[] numbersArray;
Run Code Online (Sandbox Code Playgroud)
没有初始化,只是宣布.您可以将其初始化为:
double[] numbersArray = new double[MAX_SIZE];
Run Code Online (Sandbox Code Playgroud)
你的评论后:
它打印出"唯一的数字",但就是这样,没有唯一的数字
你正在使用
System.out.printf("The unique numbers were",Arrays.toString(list));
Run Code Online (Sandbox Code Playgroud)
两种选择:
String使用%s您希望/需要将数组打印为字符串的位置发送参数:
System.out.printf("The unique numbers were %s.",Arrays.toString(list));
Run Code Online (Sandbox Code Playgroud)使用 System.out.println
System.out.println("The unique numbers were " + Arrays.toString(list));
Run Code Online (Sandbox Code Playgroud)| 归档时间: |
|
| 查看次数: |
4830 次 |
| 最近记录: |