我正在建立一个程序来存储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;
}
}
}
答案 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;
}