2016-09-17 25 views
0
import java.util.*; 
public class test2 
{ 
    public static void main(String [] args) 
    { 
     int mark; 
     int sum = 0; 
     int student = 1; 
     for (student = 1; student <= 10; student++) 
     { 
      Scanner sc = new Scanner(System.in); 
      System.out.println("enter mark"); 
      mark = sc.nextInt(); 
      if (mark > 0) 
      { 
       sum = sum + mark; 
      } 

      else 
      { 
       student = 50; 
      } 

     } 
     System.out.println("sum is" + sum); 

    } 
} 

我想更改此代码以更好地适合目的并摆脱任何低效率,我认为while循环会比其他循环更好地工作但我不知道如何处理此问题问题。更改循环类型以摆脱效率低下

+0

我想这是错误的说法'学生= 50的有效投入;'因为你的循环将退出立即。目前尚不清楚你到底是什么问题。 – YoungHobbit

+0

对于任何混淆我很抱歉,我想在这段代码中做的事情是,如果它大于0,则标记总和,如果输入0,则退出循环。因为这样做效率不高,我想改变为不同的循环类型以使其更清晰,但是没有任何想法从何开始。@ YoungHobbit –

+2

您的循环速度取决于人的交互。你在谈论什么样的效率? –

回答

1
  1. 声明扫描仪在循环之外。 (您必须在每次致电nextInt()后致电sc.nextLine()
  2. 您是否使用student = 50;退出循环?这就是break的用途。
  3. 您的环路选择不会影响效率。 for循环似乎适用于此。
0

如下你应该改变你的方法:

public static void main(String[] args) { 
    int mark; 
    int sum = 0; 
    int student = 1; 
    Scanner sc = new Scanner(System.in); 
    while (student <= 10) { 
     System.out.println("Enter mark: "); 
     mark = sc.nextInt(); 
     if (mark != 0) {  // check if mark is not 0 
      sum = sum + mark; // increment the mark 
     } else { 
      break;    // exit the loop 
     } 
     student++; 
    } 
    System.out.println("Sum is: " + sum); 
} 

然后,如果你输入标记0,它会立即退出循环。

0
import java.util.*; 
public class test2 
{ 
    public static void main(String [] args) 
    { 
     int sum = 0; 
     Scanner sc = new Scanner(System.in); // Declare outside loop, you only need one instance 
     for (int student = 1; student <= 10; student++) 
     { 
      System.out.println("enter mark"); 
      int mark = sc.nextInt(); 
      if (mark <= 0) // If mark is negative 
      { 
       break; // Exit loop 
      } 
      sum += mark; // Increment sum by mark 

     } 
     System.out.println("sum is" + sum); 
    } 
} 

我觉得0标志应该是,但这样你可能想用'标志< 0' ,而不是