2016-09-17 2 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); 

    } 
} 

я хочу, чтобы изменить этот код, чтобы лучше соответствовать целям и избавиться от какой-либо неэффективности я думаю, что в то время как цикл будет работать лучше, чем если бы еще цикля, но я не знаю, как подойти к этому проблема.изменение типа петли, чтобы избавиться от неэффективного

+0

Я предполагаю, что это неверное утверждение' студент = 50; 'потому, что ваш цикл будет выходить немедленно. Неясно, в чем именно вы находитесь, это проблема, с которой вы сталкиваетесь. – YoungHobbit

+0

Извините за любую путаницу, что я хотел сделать в этом коде, суммировать метки, если их больше 0 и выйти из цикла, если 0 введен. потому что это неэффективно, я хотел перейти к другому типу цикла, чтобы сделать его более понятным, но не имел понятия, с чего начать. @ YoungHobbit –

+2

Ваша скорость цикла зависит от взаимодействия человека. О какой эффективности вы говорите? –

ответ

1
  1. Заявить сканер вне цикла. (Вы должны позвонить sc.nextLine() после каждого звонка до nextInt())
  2. Вы используете student = 50; для выхода из своей петли? Вот что такое break.
  3. Ваш цикл не влияет на эффективность. Для этого петля кажется подходящей.
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' вместо

Смежные вопросы