2017-12-07 23 views
1

私はまだ学んでいます。今日、私はswitch文の病変に、SoloLearnで質問があります:Javaのswitch文について

int day = 3; 

switch(day) { 
    case 1: 
    System.out.println("Monday"); 
    break; 
    case 2: 
    System.out.println("Tuesday"); 
    break; 
    case 3: 
    System.out.println("Wednesday"); 
    break; 

// Outputs "Wednesday" 

と私は考えて、私が入力し、switch文について覚えておく例を持つことができます:私は月曜日、2通りの入力数、および1が欲しいです火曜日のように....日曜日など7に、そして繰り返し:月曜日、火曜日、9が8を.... これは私のコードです:

import java.util.Scanner; 

public class Program { 
public static void main(String[] args) { 
    Scanner day = new Scanner(System.in); 


     if (day.nextInt()>7){ 
      day.nextInt()=day.nextInt()%7; 
     } 

    switch(day.nextInt()){ 
     case 1 : 
      System.out.println("Monday"); 
      break; 
     case 2: 
      System.out.println("Tuesday"); 
      break; 
     case 3: 
      System.out.println("Wednesday"); 
      break; 
     case 4: 
      System.out.println("Thursday"); 
      break; 
     case 5: 
      System.out.println("Friday"); 
      break; 
     case 6: 
      System.out.println("Saturday"); 
      break; 
     case 0: 
      System.out.println("Sunday"); 
     case 7: 
      System.out.println("Sunday"); 
      break; 

     } 
    } 
} 

とエラー。私の知識はこの問題を解決するのに十分ではありません(私はそう思っています。なぜなら私は初心者で、まだ学習しているからです)。あなたは私のために拡大することができますか、このことを修正し、教えてくれてありがとう! 楽しんでください!

答えて

0

case 0以下のブレークステートメントがありません。 Javaでは、他の言語と同様にラベルの流出を許可していません。

また、あなたの番号が7以上でないことを確認する必要があります。そうでない場合は、2回目に0を得ることはありません。

  case 6: 
       System.out.println("Saturday"); 
       break; 
      case 0: 
       System.out.println("Sunday"); 
       break; 

スイッチの値は()あなたがここにdefault caseを提供していないとして、あなたがエラーを取得するよりも、7を超えた場合:8%7は、ケース0の後に1

+0

を得ることはありません、0に7を変更する必要があります.. \遊び場\:9:エラー:予期しないタイプ 日。ネックスtInt()= day.nextInt()%7; ^ 必須:変数 が見つかりました:値 1エラー これはSoloLearnでのエラーです。あなたは私のために探検することができますか? –

0

追加ブレークです。場合によっては値域を得るために、number%7のような何かを行うことができます。

5

問題はここにある:

if (day.nextInt()>7){ 
     day.nextInt()=day.nextInt()%7; 
    } 

あなたが戻ってあなたが行うことができないメソッド呼び出しday.nextInt()、に値を代入しようとしています。代わりに、次のようなものを試してください:

また
int dayNum = day.nextInt() % 7; 

、あなたのswitchはケースになることはありませんdayNum == 7ためのケースが含まれています。

+0

ありがとうございますが、わかりません。 前回、私は追加しようとしました –

0

NextIntは、()メソッドであるあなたがcase 0以下break文が欠落しているとday.nextInt() 4回を書き込むことによって、あなたが実際にユーザーが求めている@kolosyで述べたように..あなたは値

2

それを割り当てることはできません4回入力する。 また、これはできませんday.nextInt()=day.nextInt()%7;これを行う。ここで重要な問題は、剰余演算子「%」のまでの数字を生成することである。この

 Scanner day = new Scanner(System.in); 
     int enteredDay = day.nextInt(); 

     if (enteredDay > 7) { 
      enteredDay = enteredDay % 7; 
     } 

     switch (enteredDay) { 
     case 1: 
      System.out.println("Monday"); 
      break; 
     case 2: 
      System.out.println("Tuesday"); 
      break; 
     case 3: 
      System.out.println("Wednesday"); 
      break; 
     case 4: 
      System.out.println("Thursday"); 
      break; 
     case 5: 
      System.out.println("Friday"); 
      break; 
     case 6: 
      System.out.println("Saturday"); 
      break; 
     case 0: 
      System.out.println("Sunday"); 
      break; 
     case 7: 
      System.out.println("Sunday"); 
      break; 

     } 
0

main関数のコードを変更バックメソッドの呼び出しに値を代入しようとしている、それを行うことにより、値はではありません。

1 %7 = 1 
7 %7 = 0 

あなたはそれが簡単そうでなければ、その後再びモジュロ演算子と1を通してそれを実行するために1を減算しなければならない、7にはむしろ1よりも平日を参照するために6までの数字0を使用して見つけるかもしれません。

0

入力を取得して変数に格納するには、nextInt()を1回使用する必要があります。 nextInt()を呼び出すたびに、次の整数値が検索されます。

Scanner day = new Scanner(System.in); 

int dayInput = day.nextInt(); 
    if (dayInput>7){ 
     dayInput=dayInput%7; 
    } 

switch(dayInput){ 
    case 1 : 
     System.out.println("Monday"); 
     break; 
    case 2: 
     System.out.println("Tuesday"); 
     break; 
    case 3: 
     System.out.println("Wednesday"); 
     break; 
    case 4: 
     System.out.println("Thursday"); 
     break; 
    case 5: 
     System.out.println("Friday"); 
     break; 
    case 6: 
     System.out.println("Saturday"); 
     break; 
    case 0: 
     System.out.println("Sunday"); 
    case 7: 
     System.out.println("Sunday"); 
     break; 

} 
0

あなたは、あなたが作成した変数で計算を行うと、その値に応じてスイッチが、これは動作するはず行うことができますday.nextInt()としてdayの入力を設定するint値を作成することによってこの問題を解決できます。

Scanner day = new Scanner(System.in); 
    int dayVal = day.nextInt(); 

    if (dayVal>7){ 
     dayVal %= 7; 
    } 

    switch(dayVal){ 
     case 1 : 
     System.out.println("Monday"); 
     break; 
    case 2: 
     System.out.println("Tuesday"); 
     break; 
    case 3: 
     System.out.println("Wednesday"); 
     break; 
    case 4: 
     System.out.println("Thursday"); 
     break; 
    case 5: 
     System.out.println("Friday"); 
     break; 
    case 6: 
     System.out.println("Saturday"); 
     break; 
    case 0: 
     System.out.println("Sunday"); 
     break; 
    } 
} 

としては前に言った、あなたは0の残留物を持っていることは決してありませんので、したがって、あなたが日曜日