2016-09-17 22 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' ,而不是