我是这个网站的新手,我是java的初学者。我正在制作一个程序,它需要5个数字并将它们吐出来。为什么这段代码不起作用?这是我的第一个.java。我把标记放在我认为问题出现的地方。
public class digitExtractor {
int tNumber;
String sNumber;
// OP thinks the problem is here...
public digitExtractor(int tNumber) {
}
// ... and here
public digitExtractor(String sNumber) {
}
public void returnInvertedOrderByMath() {
int Integer1;
int Integer2;
int Integer3;
int Integer4;
int Integer5;
Integer1 = (tNumber % 10);
Integer2 = (tNumber % 100) / 10;
Integer3 = (tNumber % 1000) / 100;
Integer4 = (tNumber % 10000) / 1000;
Integer5 = (tNumber % 100000) /10000;
System.out.println(Integer1 + "\n" + Integer2 + "\n" + Integer3 + "\n" + Integer4 + "\n" + Integer5);
}
public void returnInvertedOrderByString() {
char part1;
char part2;
char part3;
char part4;
char part5;
part1 = sNumber.charAt(4);
part2 = sNumber.charAt(3);
part3 = sNumber.charAt(2);
part4 = sNumber.charAt(1);
part5 = sNumber.charAt(0);
System.out.println(part1 + "\n" + part2 + "\n" + part3 + "\n" + part4 + "\n" + part5);
}
}
答案 0 :(得分:0)
我认为你想要的是初始化你的构造函数中的实例字段。
在public digitExtractor(int tNumber)
中,你会有一个身体:
// assigning instance field with constructor's argument value
this.nNumber = tNumber;
在public digitExtractor(String sNumber)
中,你会有一个身体:
// assigning instance field with constructor's argument value
this.sNumber = sNumber;
这样,您的returnInvertedOrder
将引用已初始化的DigitExtractor
字段,然后执行您要执行的操作。
请注意,这对于String
字段尤其重要,因为如果在您的代码中引用它之前尚未初始化它,则会抛出NullPointerException
。
如果未初始化,int
将默认为0
。
答案 1 :(得分:0)
这应该工作时请记住,我在您的程序中添加了一个主要方法来测试您的代码 并查看我添加到您的代码中的评论。
public class DigitExtractor {
private int tNumber;
private String sNumber;
public static void main(String[] args){
//this will work because i chose the right constructor
DigitExtractor d = new DigitExtractor(10000);
d.returnInvertedOrderByMath();
//this wont work because sNumber is null
//d.returnInvertedOrderByString
}
public DigitExtractor(int tNumber) {
this.tNumber = tNumber;
}
public DigitExtractor(String sNumber) {
this.sNumber = sNumber;
}
public void returnInvertedOrderByMath() {
int Integer1 = (tNumber % 10);
int Integer2 = (tNumber % 100) / 10;
int Integer3 = (tNumber % 1000) / 100;
int Integer4 = (tNumber % 10000) / 1000;
int Integer5 = (tNumber % 100000) /10000;
System.out.println(Integer1 + "\n" + Integer2 + "\n" + Integer3 + "\n" + Integer4 + "\n" + Integer5);
}
public void returnInvertedOrderByString() {
char part1 = sNumber.charAt(4);
char part2 = sNumber.charAt(3);
char part3 = sNumber.charAt(2);
char part4 = sNumber.charAt(1);
char part5 = sNumber.charAt(0);
System.out.println(part1 + "\n" + part2 + "\n" + part3 + "\n" + part4 + "\n" + part5);
}
}
答案 2 :(得分:0)
int tNumber; // This is an instance variable as it belongs to the class
String sNumber;
// This is a constructor which takes an integer
public digitExtractor(int tNumber) { // tNumber here is a parameter which is not the same as tNumber above. You can change the name of this parameter to anything you like
// "this" keyword tells us we are referring to instance variable and assigning the value of tNumber parameter to instance one
this.tNumber = tNumber;
}
public digitExtractor(String sNumber) {
if (sNumber == null){
this.sNumber = ""; // if null, let's put an empty string as default
} else {
this.sNumber = sNumber;
}
}