我刚写的这个课确实以我想要的方式工作。我的问题是我将其分解为太多方法吗?它几乎看起来过度,但在主要方法中看起来很可怕。但现在我有6个小方法(7个包括main)。我想我正在寻找一般反馈。非常感谢!
我是否应该简要说明本课程中发生的事情,以便人们更好地理解?
import java.util.Scanner;
import java.util.Arrays;
public class DuplicateElimination
{
private static Scanner input = new Scanner(System.in);
private static int[] numberArray = new int[5];
private static int initialInput = 0;
public static void main(String[] args)
{
Arrays.fill(numberArray, 0); //initialize array
for (int x = 0; x < numberArray.length; x++) // perform 5x
{
initialInput =getNumber(); //get number from user
boolean inRange = checkRange(); // check if number in range
if (inRange == true)
{
boolean uniqueNumber = uniqueNumber();//check if number is unique
if (uniqueNumber == true)
{
numberArray[0]=initialInput; //add number to array
printUniqueNumbers();
}
else
notUniqueNumber();
}
else
{
notInRange();
x--; // do not count out-of-range numbers as one of the 5 numbers
}
}//end for
}//end main
public static int getNumber()
{
System.out.printf("Please enter a unique number between 10 and 100: ");
int initialInput = input.nextInt();
return initialInput;
}//end getNumber
public static boolean checkRange()
{
boolean inRange;
if ((initialInput >=10) && (initialInput <= 100))
inRange = true;
else
inRange = false;
return inRange;
}//end checkRange
public static boolean uniqueNumber()
{
boolean uniqueNumber;
Arrays.sort(numberArray);
int location = Arrays.binarySearch(numberArray, initialInput);
if (location <= 0)
uniqueNumber = true;
else
uniqueNumber = false;
return uniqueNumber;
}//end uniqueNumber
public static void printUniqueNumbers()
{
System.out.println("List of unique numbers entered: ");
for (int n = 0; n < numberArray.length; n++)
if (numberArray[n] != 0)
System.out.print(numberArray[n] + " ");
System.out.println("\n");
}//end printUniqueNumbers
public static void notUniqueNumber()
{
System.out.print("You already input " + initialInput + ".\n\n");
printUniqueNumbers();
}
public static void notInRange()
{
System.out.println("Number is out of range. Please try again.\n");
}
}//end class
答案 0 :(得分:0)
我会将notUniqueNumber和notInRange操作带回main方法,因为它们只是执行简单的操作,因此最终会得到更少的代码。 人们可以争辩说,通过引入单独的方法,您可以轻松地修改它们而不会弄乱主要方法,这是事实。这似乎只是一个小项目,所以只要考虑你的目标和权重的利弊。
答案 1 :(得分:0)
Java方法是一组分组在一起的语句 执行操作。在这个示例中,每个方法都处理单个任务。所以到目前为止它是好的。我认为你担心评论和可读性 < / p>
有两种评论
我认为您可以为课程
DuplicateElimination
提供一些文档评论。像这样。/** * The DuplicateElimination class provides ... */ public class DuplicateElimination { ...
格式的
编写Java类和接口时,应遵循以下格式规则:
在这种情况下,
class DuplicateElimination {
private static Scanner input = new Scanner(System.in);;
private static int[] numberArray = new int[5];
private static int initialInput = 0
public static void main(String[] args) {
Arrays.fill(numberArray, 0); //initialize array;
....
}
int emptyMethod() {}
...
}
如果你在Eclipse中
Ctrl
+ Shift
+ F
即可。
可读性
以下是专业Java开发人员在编写代码时遵循的一些编程或编码最佳实践。它使代码具有超级可读性。
避免无意义的名称
毫无意义的名字,例如变量名如abc,temp,data等不会泄露意图,只会降低可读性。
提供有意义的名称
这是第一次编码最佳实践的对应物。而不是无意义的名称,提供有意义的名称,揭示程序员的意图
如果明确表达意图,请选择较长的名称。
我喜欢在我的方法中使用短名称,但只有在它完整并且清楚地显示程序员的意图时才会使用短名称。短程易于读写,但不要忘记遵循Java bean命名约定