java大家帮我看看我这代码怎么输出。。。

importjava.util.Scanner;publicclassdg{publicstaticintf(intx){Scannersc=newScanner(Sys... import java.util.Scanner;
public class dg {
public static int f(int x)
{
Scanner sc=new Scanner(System.in);
x=sc.nextInt();
if(x==1)
return 1;
else
return f(x-1)*2;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
}
}
展开
 我来答
dahezi666
2012-07-24 · TA获得超过215个赞
知道答主
回答量:336
采纳率:13%
帮助的人:111万
展开全部
import java.util.Scanner;
public class Dg {
public static int f(int x)
{
if(x==1)
return 1;
else
return f(x-1)*2;
}
public static void main(String[] args) {
System.out.println("请输入一个字符串:");
Scanner sc=new Scanner(System.in);
int x=sc.nextInt();
System.out.println( Dg.int f( x));
}
}

输出结果是
请输入一个字符串:
3 //输入的是3返回结果是4
4
Lei木兮
2012-07-24 · 超过11用户采纳过TA的回答
知道答主
回答量:58
采纳率:0%
帮助的人:32万
展开全部
你这方法写的就不对。你这样写,当输入的值不是1的时候还需要你再输入值,那就不是之前的那个了。而且再次输入的值不是1 的话,还会重复上面的事情。根本不会有结果。
import java.util.Scanner;
public class dg {
public static int f(int x)
{

//Scanner sc=new Scanner(System.in);
//x=sc.nextInt();

if(x==1)
return 1;
else
return f(x-1)*2;
}
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
x=sc.nextInt();
System.out.println(f(x));

}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
529656407
2012-07-24 · TA获得超过161个赞
知道答主
回答量:97
采纳率:0%
帮助的人:50.4万
展开全部
虽然不知道你要实现什么功能,但是问题挺多的。。
第一点:你既然将变量x作为参数传入f方法中那么为什么在方法中又要使用scanner为x重新赋值呢,这样的话你方法的参数x就没作用了啊 ,你还不如在f方法中里面声明x变量,然后f方法不要参数。然后return (f-1)*2改成return f()*2

第二点:你可以尝试在main方法中使用System.out.println(f());打印,然后在控制台输入数字。多输几次你会发现不管你输入什么数字,你输1次不是1的数字,然后再输1,结果是1,;输2次不是1的数字,再输1结果就是4,输3次不是1的输结果是8......以此类推,这样看来这个方法的结果是和你输入不是1的数字的次数有关,是【次数*2*当x为1是返回的值(你写的当x为1是反会1)】。这样的话你的scanner手动输入就没意义了...
出现这种状况的原因是比如你之前输入了3次不是1的数,第4次输入1 ,那么因为你使用递归的原因,第4次调用f方法返回的是1*2,然后执行第3次f方法返回(1*2)*2,然后执行第2次f方法返回((1*2)*2)*2,这样依次类推。

可能是我的方式与你实际想要的效果有出入,所以可能我的方式不对,你可以参考参考。。。
而且可能说的有点混乱....能看懂的话就谅解一下...呵呵
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
soframe
2012-07-24
知道答主
回答量:39
采纳率:0%
帮助的人:6.5万
展开全部
你这样写,还能循环输入。
public static int f(int x) {
if (x == 1)
return 1;
else
return f(x - 1) * 2;
}
public static void main(String[] args) {
int x = 0;
while (true) {
System.out.println("请输入整数:");
Scanner sc = new Scanner(System.in);
x = sc.nextInt();
System.out.println("结果:" + f(x));
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
JackChen_bd
2012-07-24
知道答主
回答量:47
采纳率:0%
帮助的人:14.2万
展开全部
最好在这个
Scanner sc=new Scanner(System.in);

后面写一句这个

System.out.println("请输入一个字符串:");
不然你在控制台不容易看到。。
追问
问题是我这个输出不了..  Main函数里面肿么写
追答
你上面那个方法f()要一个参数,然后你下面又把那个数X给覆盖了,你到底要写个什么啊
dg.f(8) 括号你传个数字就好了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
sunshineboy163
2012-07-26
知道答主
回答量:6
采纳率:0%
帮助的人:9541
展开全部
public static void main(String[] args) {
dg.f();
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式