我正在大学为我的编程考试练习java,我差不多完成了这个程序。
我有2个班级:
public class Recording {
public int height;
public int diameter;
public int weight;
public Recording (int height, int diameter, int weight) {
this.height = height;
this.diameter = diameter;
this.weight = weight;
}
}
以及正在进行所有操作的那个:
import java.io.IOException;
public class Leergut {
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
int[] recordings = new int[4];
total(recordings);
summary(recordings);
int total = recordings[0]+recordings[1]+recordings[2]+recordings[3]+recordings[4];
int count = recordings[0]*9+recordings[1]*10+recordings[2]*10+recordings[3]*8+recordings[4]*15;
System.out.println("Type 0:"+recordings[0]+" pcs x 9c");
System.out.println("Type 0:"+recordings[1]+" pcs x 10c");
System.out.println("Type 0:"+recordings[2]+" pcs x 10c");
System.out.println("Type 0:"+recordings[3]+" pcs x 8c");
System.out.println("Type 0:"+recordings[4]+" pcs x 15c");
System.out.println("total: "+total+"c ("+count+" pcs)");
}
public static int classify(Recording r) {
if (r.height == 250 && r.diameter == 67 && r.weight == 365) {int code = 0; return code;}
if (r.height == 300 && r.diameter == 80 && r.weight == 62) {int code = 1; return code;}
if (r.height == 300 && r.diameter == 85 && r.weight == 152) {int code = 2; return code;}
if (r.height == 250 && r.diameter == 67 && r.weight == 62) {int code = 3; return code;}
if (r.height == 250 && r.diameter == 80 && r.weight == 152) {int code = 4; return code;}
else { int code = -2; return code ;}
}
public static int deposit(int code) {
int pfand;
if(code == 0) {pfand = 9; return pfand;}
if(code == 1) {pfand = 10; return pfand;}
if(code == 2) {pfand = 10; return pfand;}
if(code == 3) {pfand = 8; return pfand;}
if(code == 4) {pfand = 15; return pfand;}
else { pfand = 0; return pfand;}
}
public static int[] total(int[] recordings) throws IOException {
int code = 5;
while (code != -2) {
Recording r = new Recording(System.in.read(), System.in.read(), System.in.read());
code = Leergut.classify(r);
int pfand = Leergut.deposit(code);
}
if (code == -2) {
System.out.println("FehlerCode -1");
}
return recordings;
}
public static int[] summary(int[] recordings) throws IOException {
int code = 5;
int count1 = 0;
int count2 = 0;
int count3 = 0;
int count4 = 0;
int count5 = 0;
while (code != -1) {
Recording r = new Recording(System.in.read(), System.in.read(), System.in.read());
code = Leergut.classify(r);
if(code == 0) {count1++;}
if(code == 1) {count2++;}
if(code == 2) {count3++;}
if(code == 3) {count4++;}
if(code == 4) {count5++;}
}
recordings[0] = count1;
recordings[1] = count2;
recordings[2] = count3;
recordings[3] = count4;
recordings[4] = count5;
return recordings;
}
}
现在的任务是创建:
int classify(Recording r) ->
对输入进行分类,否则返回负值
int deposit(int code) ->
计算瓶子的价值或返回0
int[] total(Recording[] r) ->
获取值的总和,使用deposit + classify
对于无效参数,返回null
int[] summary(Recording[] r) ->
获取每个代码出现的频率,索引0是第一个代码,依此类推......
对于无效参数,返回null
现在我的问题是我想System.in.read()
这样:
250,67,365
它不起作用。也许有人可以告诉我我做错了什么?
问题:
如果我需要返回一个数组,如何为无效参数返回“-1”或null
(如果翻译关闭则为sry)?
是否建议使用Scanner
?从来没有使用它,所以它可能会让我搞砸但是哎呀..
我需要学习,所以我现在就开始吧!
答案 0 :(得分:0)
你问了3个问题,实际上是两个问题(问题1和2有相同的根本原因):
1)当我期望“System.in.read()像这样:250,67,365”时,为什么我的代码不起作用。
2)我应该使用扫描仪课吗?
您的问题是您想要读取 int 类型的输入。 int 是一个数字序列。这意味着必须从输入中按顺序读取这些数字,然后组合以创建实际的int。
有些功能可以帮到你,有些则没有。
System.in.read 读取单个字符,因此它不是您想要的。更糟糕的是,那些单独的字符被读作ASCII码,因此如果你输入'9'那么你将得到它的ASCII码(57)并且感到困惑。
Scanner 类从输入读取,但随后进行错误检查并将输入组合到预期类型中,如下所示: import java.util.Scanner;
Scanner sc = new Scanner(System.in);
int i = sc.nextInt();
3)如何为无效参数返回null?
从我看到的,所有函数都返回数组,它们可以具有空值。所以你只需要在返回之前检查argguments值是否正确。但你没有说他们应该如何正确。