2017-01-24 5 views
-2

Я пытаюсь получить System.out.print в той же строке. Я хочу, чтобы дела были как дни (случай 0: «воскресенье»), поэтому я могу написать System.out.println («Сегодня есть« + день + », а следующий день -« + m1 »), но когда я это пробую, Я получаю номер дела вместо строки (Today is 0, а в будущем - 0). Я думаю, что есть лучший способ, чтобы написать логику по сравнению с тем, как он у меня:Переключить целое число в строку

import java.util.*; 

public class HomeWork3 { 

    public static void main(String[] args) { 

     Scanner input = new Scanner(System.in); 

     System.out.print("Sun = 0, Mon = 1, Tue = 2, Wed = 3, Thurs = 4, Fri = 5, Sat = 6 "); 
     System.out.print("\nEnter today's number: "); 
     int day = input.nextInt(); 
     System.out.print("Enter the number of days that elapsed since today: "); 
     int n1 = input.nextInt(); 


     //String strD = Integer.toString(day); 

     switch (day){ 
     case 0: System.out.println("Today is Sunday"); 
     break; 
     case 1: System.out.println("Today is Monday"); 
     break; 
     case 2: System.out.println("Today is Tuesday"); 
     break; 
     case 3: System.out.println("Today is Wednesday"); 
     break; 
     case 4: System.out.println("Today is Thursday"); 
     break; 
     case 5: System.out.println("Today is Friday"); 
     break; 
     case 6: System.out.println("Today is Saturday"); 
     break; 
     } 
     int m1 = ((day + n1)% 7); 

     switch (m1){ 
     case 0: System.out.println("The future day is Sunday"); 
     break; 
     case 1: System.out.println("The future day is Monday"); 
     break; 
     case 2: System.out.println("The future day is Tuesday"); 
     break; 
     case 3: System.out.println("The future day is Wednesday"); 
     break; 
     case 4: System.out.println("The future day is Thursday"); 
     break; 
     case 5: System.out.println("The future day is Friday"); 
     break; 
     case 6: System.out.println("The future day is Saturday"); 
     break; 
     } 
     //String strD = Integer.toString(day); 

     //System.out.println(strD + " this might work " + n1); 

    } 
} 

ВЫВОД:

ВС = 0, Пн = 1, Вт = 2, ср = 3, ЧГ = 4 , пт = 5, сб = 6 Введите сегодняшнее число: 2 Введите число дней, прошедших с сегодняшнего дня: 5 Сегодня вторник будущее день воскресенье

+0

"OUTPUT" означает "output wanted"? – azro

+0

объявить строкам 'String currentDay' и' String futureDay'. Вместо того, чтобы печатать непосредственно в ваших случаях, установите эти две строки в правильное значение и распечатайте один раз на самом и 'System.out.Println (« Today is »+ currentday +. Будущий день« + futureDay »;' –

+0

Вы интересно, почему, если вы печатаете 'day', вы получаете целое число, но вы получаете его как' int day = input.nextInt(); '. Поэтому предложите вам понять свой код. Если вы хотите распечатать его в конце, используйте свой переключатель, чтобы установить значение в 'String dayText' (чтобы сохранить код) – AxelH

ответ

1

Самым простым способом, когда вы меняете println() в первом switch -block to print() и добавьте пробел в свой текст.

Вторая версия состоит в определении двух строк и установить значения в switch -блоков:

String today; 
switch (day){ 
    case 0: today = "Sunday"; 
    break; 

и так далее, а также

String futureday; 
switch (m1){ 
    case 0: futureday = "Sunday"; 
    break; 

и так далее.В конце концов у вас есть желаемый результат:

System.out.println("Today is "+ today + " and the future day is " + futureday); 

Но самый изящный способ определить массив будням:

String[] days = {"Sunday","Monday","Tuesday"}; 

Таким образом, вы можете удалить ваши switch -блоков и просто написать:

System.out.println("Today is "+ days[day] + " and the future day is " + days[m1]); 

Подсказка: Нужно инициализировать day и futureday. И вы должны проверить, что day является < 7, чтобы предотвратить IndexOutOfBounds-исключение.

1

Как насчет просто с помощью встроенного в DayOfWeek перечислении :

int day = 4; 
System.out.println("Today is " + DayOfWeek.of(day) 
    .getDisplayName(TextStyle.FULL, Locale.getDefault())); 

Выход:

Today is Thursday 

Но если вы хотите использовать переключатель заявление, я бы сказал, добавить слой абстракции, чтобы упростить проблемы, которые нужно решить. например сделать метод, который принимает и int и возвращает день недели как String:

public static String getWeekDay(int dayNumber) { 
    switch(dayNumber) { 
     case 0: return "Sunday"; 
     case 1: return "Monday"; 
     case 2: return "Tuesday"; 
     ... 
    } 

    throw new IllegalArguemntException("Invalid day number: " + dayNumber); 
} 

и использовать, чтобы создать выход:

System.out.println("Today is " + getWeekDay(day)); 
+0

@AxelH Meh, googling «java int to week day» дает документ 'DayOfWeek' на # 1. Мог бы сам туда попасть. Некоторым людям просто нравится спрашивать других, а не google. –

+0

Я пытаюсь заставить его работать с командой переключения – Drolltv65

+0

I googled 1st. Я задал этот вопрос здесь после того, как попробовал все, что нашел. Поэтому я не беру «кого-то, кто просто хочет», а кто-то другой. Мягкие навыки необходимы при работе с людьми, которые пытаются учиться. – Drolltv65

2

Как о следующем:

String[] days = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" }; 
int m1 = ((day + n1)% 7); 
String output = String.format("Today is %s, the future day is %s", days[day], days[m1]); 
System.out.println(output); 

(Очевидно, что вам необходимо обеспечить день < 7)

+0

Мне это нравится, но я пытаюсь заставить его работать с командой switch. – Drolltv65

0

Потому что вам нужно связать INT и строку вы можете использовать карту

public static void main(String[] args) { 

    Scanner input = new Scanner(System.in); 
    //add all days into the map with their key (number) 
    HashMap<Integer, String> map = new HashMap<Integer, String>(); 
    map.put(0, "Sunday"); 
    map.put(1, "Monday"); 
    map.put(2, "Tuesday"); 
    map.put(3, "Wednesday"); 
    map.put(4, "Thursday"); 
    map.put(5, "Friday"); 
    map.put(6, "Saturday"); 

    //Printing all days 
    for(int key : map.keySet()){ 
     System.out.print(key+"="+map.get(key)+", "); 
    } 
    System.out.print("\nEnter today's number: "); 
    int day = input.nextInt(); 
    System.out.print("Enter the number of days that elapsed since today: "); 
    int n1 = input.nextInt(); 

    n1 = ((day + n1)% 7); 

    System.out.println("Today is "+map.get(day) + ", the future day is " + map.get(n1)); 

} 

Это позволяет вернуть значение, которое соответствует ключу введенного с летящим сканером

+0

почему бы не 'String [] days = {" Sunday ", ..." Saturday "};'? Это проще для этого случая – AxelH

+0

@AxelH вы тоже можете, но я так привык к Map, что всегда появилась моя первая идея: D bu yes, когда ключи целые, начиная с 0, массив лучше, но это позволяет показать различные возможности – azro

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