Java 我怎样才能提高效率?
我的程序根据整数输入的比较给出字符串答案。有没有一种更有效的方法来实现这一点,而不是分别提示用户3次并分别调用numberVerify 3次?我该怎么做?对Java非常陌生Java 我怎样才能提高效率?,java,performance,iteration,Java,Performance,Iteration,我的程序根据整数输入的比较给出字符串答案。有没有一种更有效的方法来实现这一点,而不是分别提示用户3次并分别调用numberVerify 3次?我该怎么做?对Java非常陌生 public static void main(String[] args) { // TODO code application logic here // declare variables int number=0; System.out.println("Enter the first
public static void main(String[] args) {
// TODO code application logic here
// declare variables
int number=0;
System.out.println("Enter the first integer: ");
int number1 = numberVerify(number);
System.out.println("Enter the second integer: ");
int number2 = numberVerify(number);
System.out.println("Enter the third integer: ");
int number3 = numberVerify(number);
String compare = comparison(number1, number2, number3);
printer(compare);
}
public static int numberVerify(int number){
Scanner in = new Scanner(System.in);
if(in.hasNextInt()){
number = in.nextInt();
}
else{
System.out.println("Error! Input must be an integer!");
System.out.println("");
return numberVerify(number);
}
return number;
}
public static String comparison(int number1, int number2, int number3){
String answer;
if(number1 == number2 && number1 == number3)
{
answer = "all the same";
}
else if(number1 != number2 && number1 != number3)
{
answer = "all different";
}
else
{
answer = "neither";
}
return answer;
}
public static void printer(String answer){
System.out.println(answer);
}
使用int数组和for循环,例如:
int [] values = new int[3];
for(int i =0; i<3; i++){
values[i] = in.nextInt();
}
int[]值=新的int[3];
for(int i=0;i使用int数组和for循环,例如:
int [] values = new int[3];
for(int i =0; i<3; i++){
values[i] = in.nextInt();
}
int[]值=新的int[3];
对于(inti=0;i,可以使用数组和少量其他修改来提高效率
这是代码
导入java.util.Scanner
公共类有效{
private static String comparison(int[] numberArray) {
String answer;
if(numberArray[0] == numberArray[1] && numberArray[1] == numberArray[2]){
answer = "all the same";
}else if(numberArray[0] != numberArray[1] && numberArray[1] != numberArray[2]){
answer = "all different";
}else{
answer = "neither";
} return answer;
}
public static void main(String[] args) {
int[] numberArray = new int[3];
Scanner scan = new Scanner(System.in);
System.out.println("Enter the numbers");
for(int i=0;i<=numberArray.length-1;i++){
if(scan.hasNextInt()){
numberArray[i]=scan.nextInt();
}else{
System.out.println("Error! Input must be an integer!");
}
}
String compare = comparison(numberArray);
System.out.println(compare);
}
私有静态字符串比较(int[]numberArray){
字符串回答;
if(numberraray[0]==numberraray[1]&&numberraray[1]==numberraray[2]){
回答:“都一样”;
}如果(numberraray[0]!=numberraray[1]&&numberraray[1]!=numberraray[2]){
回答=“完全不同”;
}否则{
回答=“两者都不”;
}返回答案;
}
公共静态void main(字符串[]args){
int[]numberArray=新int[3];
扫描仪扫描=新扫描仪(System.in);
System.out.println(“输入数字”);
对于(inti=0;i,可以使用数组和少量其他修改来提高效率
这是代码
导入java.util.Scanner
公共类有效{
private static String comparison(int[] numberArray) {
String answer;
if(numberArray[0] == numberArray[1] && numberArray[1] == numberArray[2]){
answer = "all the same";
}else if(numberArray[0] != numberArray[1] && numberArray[1] != numberArray[2]){
answer = "all different";
}else{
answer = "neither";
} return answer;
}
public static void main(String[] args) {
int[] numberArray = new int[3];
Scanner scan = new Scanner(System.in);
System.out.println("Enter the numbers");
for(int i=0;i<=numberArray.length-1;i++){
if(scan.hasNextInt()){
numberArray[i]=scan.nextInt();
}else{
System.out.println("Error! Input must be an integer!");
}
}
String compare = comparison(numberArray);
System.out.println(compare);
}
私有静态字符串比较(int[]numberArray){
字符串回答;
if(numberraray[0]==numberraray[1]&&numberraray[1]==numberraray[2]){
回答:“都一样”;
}如果(numberraray[0]!=numberraray[1]&&numberraray[1]!=numberraray[2]){
回答=“完全不同”;
}否则{
回答=“两者都不”;
}返回答案;
}
公共静态void main(字符串[]args){
int[]numberArray=新int[3];
扫描仪扫描=新扫描仪(System.in);
System.out.println(“输入数字”);
对于(inti=0;i我不知道更有效或更可读的方法,似乎已经是这样了。但我可以把它缩短
public static void main(String[] args) {
// TODO code application logic here
// declare variables
Scanner in = new Scanner(System.in);
int[] numbers = new int[3];
String[] labels = {"first","second","third"};
for(int i=0; i<3; i++)
{
System.out.print("Enter the " + labels[i] + " integer: ");
numbers[i] = in.nextInt();
}
System.out.println(comparison(numbers[0],numbers[1],numbers[2]));
}
public static String comparison(int number1, int number2, int number3){
String answer;
if(number1 == number2 && number1 == number3)
{
answer = "all the same";
}
else if(number1 != number2 && number1 != number3 && number2 != number3)
{
answer = "all different";
}
else
{
answer = "neither";
}
return answer;
}
publicstaticvoidmain(字符串[]args){
//此处的TODO代码应用程序逻辑
//声明变量
扫描仪输入=新扫描仪(系统输入);
int[]数字=新的int[3];
字符串[]标签={“第一”、“第二”、“第三”};
对于(inti=0;i我不知道更有效或更可读的方法,似乎已经是这样了。但我可以把它缩短
public static void main(String[] args) {
// TODO code application logic here
// declare variables
Scanner in = new Scanner(System.in);
int[] numbers = new int[3];
String[] labels = {"first","second","third"};
for(int i=0; i<3; i++)
{
System.out.print("Enter the " + labels[i] + " integer: ");
numbers[i] = in.nextInt();
}
System.out.println(comparison(numbers[0],numbers[1],numbers[2]));
}
public static String comparison(int number1, int number2, int number3){
String answer;
if(number1 == number2 && number1 == number3)
{
answer = "all the same";
}
else if(number1 != number2 && number1 != number3 && number2 != number3)
{
answer = "all different";
}
else
{
answer = "neither";
}
return answer;
}
publicstaticvoidmain(字符串[]args){
//此处的TODO代码应用程序逻辑
//声明变量
扫描仪输入=新扫描仪(系统输入);
int[]数字=新的int[3];
字符串[]标签={“第一”、“第二”、“第三”};
对于(inti=0;i效率在这里是无关的
用户需要几秒钟来输入数字。操作系统可能需要几毫秒来进行键盘事件处理、屏幕重画等。您的Java应用程序需要几微秒或更少的时间来进行决策。您为减少微秒组件而付出的任何努力都是白费力气
如果这里有需要解决的问题(我不是说有),它们将是:
- 使用户界面易于使用
- 编写代码以便易于阅读和维护
- 将代码编写为“优雅的”…这不一定与前面的相同
更新-显然,您实际上对简化和/或减小代码的大小感兴趣
首先,这不是大多数人所说的效率(事实上,我认为花时间改进足够好的代码是对时间的低效利用)
其次,简单性和代码大小不是一回事。大多数人(程序员)会说简单代码是易于理解的代码……对于普通程序员来说。通常,一个问题的更简洁的解决方案实际上很难理解。(以@rby的代码为例,如果您需要在不测试它的情况下确保它是正确的,那么您需要非常仔细地阅读它。)
最后,专业软件工程师遵循的一般原则是,代码必须“足够好,但不能更好”1.花时间把程序做得比实际更好是在浪费时间,而且可能会让你/你的客户/你的雇主花钱
1-目的可能包括性能标准、可读性/可维护性、通用性/可恢复性和各种特定的正确性标准。但情况并非如此。通常,代码是为许多标准不相关甚至适得其反的环境编写的。但我离题了….效率是不可改变的这里有蚂蚁
用户需要几秒钟来输入数字。操作系统可能需要几毫秒来进行键盘事件处理、屏幕重画等。您的Java应用程序需要几微秒或更少的时间来进行决策。您为减少微秒组件而付出的任何努力都是白费力气
如果这里有需要解决的问题(我不是说有),它们将是:
- 使用户界面易于使用
- 编写代码以便易于阅读和维护
- 将代码编写为“优雅的”…这不一定与前面的相同
更新-显然,您实际上对简化和/或减小代码的大小感兴趣
首先,这不是大多数人所说的效率(事实上,我认为花时间改进足够好的代码是对时间的低效利用)
其次,简单性和代码大小不是一回事。大多数人(程序员)会说简单代码是易于理解的代码……对于普通程序员来说。通常,一个问题的更简洁的解决方案实际上很难理解