java问题,方法我已经写好了,但是我不知道怎么写输入的代码,实现如图效果,求解。

importjava.util.*;publicclassMain{publicstaticvoidmain(String[]args){Scannersc=newSca... import java.util.*;public class Main {public static void main(String[] args) { Scanner sc = new Scanner(System.in); TV tv=new TV(); if(sc.hasNext()) { tv.control(sc.next()); } if(sc.hasNextInt()) { tv.control(sc.nextInt()); }}}class TV{ String ChannelArray[]={"中央1台","中央2台","中央3台","中央4台","浙江卫视","浙江综合","浙江经济","杭州文艺","中央体育","山东卫视"}; int CurrentChannel[]={0,1,2,3,4,5,6,7,8,9}; int recent; void control(int recent) { this.recent=recent; System.out.println(ChannelArray[recent]); } void control(String Current) { switch(Current) { case "U": recent++; if(recent>9) recent=0; System.out.println(ChannelArray[recent]); break; case "D": recent--; if(recent<0) recent=9; System.out.println(ChannelArray[recent]); break; case "O": System.out.println("电视关闭"); break; } }} 展开
 我来答
宋天一x340
2016-12-30 · TA获得超过122个赞
知道小有建树答主
回答量:168
采纳率:100%
帮助的人:62.7万
展开全部
import java.util.Scanner;

public class TestRef {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
TV tv=new TV();
/*if(sc.hasNext())
{
tv.control(sc.next());
}
if(sc.hasNextInt())
{
tv.control(sc.nextInt());
}*/
while(sc.hasNext()){
/*
 * 简单说明一下,当输入1234的时候,问一下这个是数字还是字符串。
 * 这个答案是不知道的,因为1234既可以是数字也可以是字符串
 * 代码一开始就sc.next()这个时候返回的是字符串,那么他会把数字也当成字符串的。
 * 看一下要求,我们会发现这里输入的内容如果不是数字,就是字符串了。
 * 所以这个地方换成if  else就更合理了,否则的话是有问题的
 * */
if(sc.hasNextInt())//一定要先判断数字否则会把数字当成字符串的
{
tv.control(sc.nextInt());
}else{
tv.control(sc.next());
}
if(tv.isClose){
break;//电视关闭,结束循环
}
}
}
}

class TV{
String ChannelArray[]={"中央1台","中央2台","中央3台","中央4台","浙江卫视","浙江综合","浙江经济","杭州文艺","中央体育","山东卫视"};
int CurrentChannel[]={0,1,2,3,4,5,6,7,8,9};
int recent;
boolean isClose;//添加一个关闭电视的属性
void control(int recent)
{
this.recent=recent;
System.out.println(ChannelArray[recent]);
}
void control(String Current)
{
switch(Current)
{
case "U":
recent++;
if(recent>9)
recent=0;
System.out.println(ChannelArray[recent]);
break;
case "D":
recent--;
if(recent<0)
recent=9;
System.out.println(ChannelArray[recent]);
break;
case "O":
System.out.println("电视关闭");
isClose = true;//关闭电视
break;
}
}
}

代码我修改了一下,你可以看一下具体的思路,这里我想说一下,楼上灯丝浪徒dslt_ 的答案的思想是不错的,他发现问题后想到的是加一个中间层来屏蔽两头的不一致的问题,尽可能的不修改你的代码。当然我也想的是尽可能不修改你的代码,但是我还是调整了你的TV这个类的代码,不能说谁的更好,看个人的喜好。

还有就是我的代码调试过,改掉了你的一个小小的bug,我把问题的原因写到注释里面了,你可以自己看一下。

久就旧1O
2016-12-30 · TA获得超过1275个赞
知道小有建树答主
回答量:709
采纳率:75%
帮助的人:209万
展开全部
public static void main(final String[] args) {
final Scanner sc = new Scanner(System.in);
final TV tv = new TV();
System.out.println("输入样例:");
while (sc.hasNext()) {
recycle(tv, sc);
}
sc.close();
}
private static void recycle(final TV tv, final Scanner scanner) {
if (scanner.hasNextInt()) {
tv.control(scanner.nextInt());
}
if (scanner.hasNext("U|D|O")) {
tv.control(scanner.next());
// 判断如果是"O", 则退出程序?  Add your code here then Do it yourself. You can do it!
}
}
追问

I can't........   

追答
private static void recycle(final TV tv, final Scanner scanner) {
if (scanner.hasNextInt()) {
tv.control(scanner.nextInt());
}
if (scanner.hasNext("U|D|O")) {
final String s = scanner.next();
tv.control(s);
// 判断如果是"O", 则退出程序?  Add your code here then Do it yourself. You can do it!
if (s.equals("O")) {
System.exit(0);
}
}
}

后面加了点code snippet,不知道符不符合你们的需求啊?

本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
heshibo111
2016-12-30 · TA获得超过131个赞
知道小有建树答主
回答量:117
采纳率:100%
帮助的人:40.8万
展开全部
Scanner sc = new Scanner(System.in);
sc.nextLine();//这个就是输出
可用String str = sc.nextLine();接收
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式