for循环嵌套的for循环跳过迭代

时间:2017-01-22 01:06:58

标签: java for-loop switch-statement iteration skip

我正在建立一个程序来存储10个不同城市(例如城市1 ...城市10)的温度,在第1天和第2天不同。第2天,在2d阵列中。 但是我的程序正确地接受了第一个输入,然后没有读取switch语句的第一个条件,并且每次重复时跳过它。

我创建了3个类Main,temp和search。 temp用于存储二维数组中的值,搜索用于获取城市名称和对应的日期a)最高温度b)最低温度。

package battlefield;

public class Main 
{
 public static void main(String []args)
 {
     temp t=new temp();
     t.takein();
     search s =new search();
     s.sch();
 }
}

package battlefield;

import java.util.Scanner;

public class temp 
{
 int a[][]=new int[2][10];
 String ch;
 Scanner sc=new Scanner(System.in);
 public temp()
 {
 System.out.println("Default temperature have been set to 15 degree  Celsius. ");
    for(int i=0;i<2;i++)
    {
        for(int j=0;j<10;j++)
        {
            a[i][j]=15;
        }
    }
  }
  public void takein()
  {

    for(int i=0;i<2;i++)
    {
        for(int j=0;j<10;j++)
        {
            System.out.println("Do you want to enter more?");
            ch=sc.nextLine();
            sc.nextLine();
            System.out.println("Value of i="+i+" Value of j="+j);
            switch(ch)
            {
                case "y": 
                    {System.out.println("Enter temprature on day "+i+" city "+j);
                    a[i][j]=sc.nextInt();
                    break;}
                case " n":
                    continue;
                case " e":
                     break;
            }
            if (ch.equals("e"))
            {
                break;
            }
        }
        if (ch.equals("e"))
        {
            break;
        }
    }


  }

  }

   package battlefield;

   public class search extends temp
 {
  String rep;
  int t=0;
   public void sch()
 {
    System.out.println("Do you want to search by highest temperature or lowest?");
    rep=sc.nextLine();
    switch(rep)
    {
          case "h":{for(int i=0;i<2;i++)
            {
                for(int j=0;j<10;j++)
                {
                    if(t<a[i][j])
                    {
                        t=a[i][j];
                    }
                    else
                        continue;
                }
            }
          for(int i=0;i<2;i++)
            {
                for(int j=0;j<10;j++)
                {
                    if(t==a[i][j])
                    {
                        System.out.println("City "+j+" has the highest temprature of all on day "+i);
                    }
                    else
                        continue;
                }
            }

          break;}
          case "l":{for(int i=0;i<2;i++)
            {
                for(int j=0;j<10;j++)
                {
                    if(t>a[i][j])
                    {
                        t=a[i][j];
                    }
                    else
                        continue;
                }
            }
            for(int i=0;i<2;i++)
             {
                for(int j=0;j<10;j++)
                {
                    if(t==a[i][j])
                    {
                        System.out.println("City "+j+" has the lowest temperature of all on day "+i);
                    }
                    else
                        continue;
                }
             }
          break;}
          case "n":break;
    }
    }
    }

1 个答案:

答案 0 :(得分:2)

nextInt()留下一个尾随换行符。变化

ch=sc.nextLine();
sc.nextLine();

ch=sc.nextLine();
// sc.nextLine();

sc.nextLine()移至

case "y": 
{
    System.out.println("Enter temprature on day "+i+" city "+j);
    a[i][j]=sc.nextInt();
    sc.nextLine(); // <-- here.
    break;
}