2016-02-18 5 views
0

Мне было интересно, может ли кто-нибудь сказать мне, можно ли пропустить дни недели после ввода 6 входов продукта или/или 6 входов количества. Таким образом, в основном программа отображает понедельник, а затем циклически 6 раз, а затем переходит во вторник в петли 6 раз, а затем в среду. Если это возможно, я могу получить несколько идей ??? Я бы очень признателен за помощь. У меня есть googled без везения, и это потому, что я знаю, что не спрашиваю у Google правильный вопрос.Петля в дни недели

import java.util.Scanner; 

     public class Mailorder { 

     public static void main(String[] args) { 

     //create a scanner 
     Scanner input = new Scanner(System.in); 

     //declare variables 

     double product1 = 3.75; 
     double product2 = 5.95; 
     double product3 = 8.75; 
     double product4 = 6.92; 
     double product5 = 8.75; 
     double product6 = 7.87; 
     double sum2 = 0; 
     int sum1 = 0; 
     double total = 0.00; 
     int product; 
     int quantity; 

     //Monday 
     System.out.print("Monday"); 
     System.out.println(); 

     //read in product # 
     System.out.print("Enter a product number: "); 
     product = input.nextInt(); 

     //read in quantity sold 
     System.out.print("Enter quantity sold: "); 
     quantity = input.nextInt(); 


     //keep reading data until the input is 0 
     while (quantity != -1) { 
       sum1 += quantity; 

     //switch case 
     switch (product) 
     { 
     case 1: total = product1 * quantity; break; 
     case 2: total = product2 * quantity; break; 
     case 3: total = product3 * quantity; break; 
     case 4: total = product4 * quantity; break; 
     case 5: total = product5 * quantity; break; 
     case 6: total = product6 * quantity; break; 
     } 

     sum2 +=total; 

     //read the next data 
     System.out.print("Enter a product number: "); 
      product = input.nextInt(); 

     System.out.print("Enter quantity sold: "); 
      quantity = input.nextInt(); 

     } 
     //print results 
     System.out.println("The total retail value of all products sold last week $" + sum2); 

    } 
    } 
+1

Вы находитесь на правильном пути с использованием слова «loop». Попробуйте найти «java loop». – VGR

+0

Вы можете воспользоваться перечислением, если оно не над головой. – user1803551

+0

Вы можете использовать еще один вход от пользователя, будь то понедельник или вторник, и так далее, а затем цикл будет работать так, как сейчас – Abhishekkumar

ответ

1

Извините за неформатированный текст, я отвечаю с мобильного.

Я думаю, что вам нужно, это оператор «%»

Внутри вашего цикла в то время как вы можете увеличивать счетчик

int count=0; 
String currentDay="Monday"; 
String nextDay; 


// your while loop start here 

count++; 

if(count%6 == 0) 
{ 
    switch(currentDay) 
    { 
    case "Monday": nextDay="Tuesday"; break; 
    //etc 
    } 
currentDay = nextDay; 
} 

% оператор даст вам напоминание о разделении.

+0

Спасибо, что больше похоже на то, что я ищу. Теперь попробуем заставить его работать. – jake

+0

Я добавил это, но теперь я получаю ошибки в конце программы. извините за форматирование, которое оно корректно отображает при вводе, но когда отображается неверно // продолжайте считывать данные до тех пор, пока вход не будет равен -1 \t \t \t while (количество!= -1) \t \t \t \t sum1 + = количество; \t \t \t \t \t \t кол-во ++; \t \t \t if (count% 6 == 0); { \t \t \t System.out.println ("Вторник"); // Вторник \t \t \t} \t \t \t if (count% 5 == 1); { \t \t \t System.out.println ("среда"); // Среда { \t \t \t} – jake

+0

Это не точный код, который я дал. Это идея о том, как использовать оператор%. Я отредактирую ответ – Cozimetzer

2

Используйте внутренний контур:

for(--- each day of the week ---) 
    // do something 

    for(int i=0; i<6; i++) { 
     // do something else 
    } 
} 

Чтобы найти то, что дни недели (как реализовать 1-й цикл), обратите внимание на класс Calendar: https://docs.oracle.com/javase/7/docs/api/java/util/Calendar.html#getActualMinimum(int)

int firstDay = Calendar.getInstance().getActualMinimum(Calendar.DAY_OF_WEEK); 
int lastDay = Calendar.getInstance().getActualMaximum(Calendar.DAY_OF_WEEK); 
+0

Спасибо, я посмотрю. Я ценю помощь! – jake

+0

Я смотрю в календарь, и я не могу использовать это, потому что мы перейдем к этому позже. Есть ли способ использовать оператор switch или использовать цикл без календаря? – jake

+0

Поскольку Java 8 содержит enum ['java.time.DayOfWeek'] (http://docs.oracle.com/javase/8/docs/api/java/time/DayOfWeek.html), который вы можете использовать вместо 'Calendar'. Самое приятное в том, что ваш цикл становится проще, используя цикл for-each. – siegi

1

DayOfWeek перечисление

DayOfWeek перечисление определяет семь объектов, по одному на каждый день недели, пронумерованные 1-7 в понедельник-воскресенье.

EnumSet - это высоко оптимизированная реализация Set для сбора объектов перечисления.

EnumSet<DayOfWeek> dows = EnumSet.allOf(DayOfWeek.class); // Collect all seven day-of-week objects, in order Monday-Sunday. 

Loop этот комплект.

for(DayOfWeek dow : dows) { 
    String dowName = dow.getDisplayName(TextStyle.FULL , Locale.US) ; // Generate localized string for the name of the day-of-week. 
    System.out.println(dowName) ; 
    … // Ask for product code and do your math 
} 
Смежные вопросы