这个toString()语句和return语句如何用??求解答:给位大神说一下toString的用法,重点

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了这个toString()语句和return语句如何用??求解答:给位大神说一下toString的用法,重点相关的知识,希望对你有一定的参考价值。

class Cone double height; E bottom; public Cone(E bottom) this.bottom=bottom; public void computerVolume() String s=bottom.toString();//显示调用toString()函数,就是讲原来的数字转化为字符串 double area =Double.parseDouble(s); //在将字符串转化为double类型 //System.out.println("output the volumne is:"+Double.parseDouble(s)*height*(1.0/3.0)); System.out.println("体积是:"+1.0/3.0*area*height+"cm^2"); class Circle double area,radius; Circle (double r) radius=r; public String toString() area=radius*radius*Math.PI; return ""+area; //为什么这样,不可以在里面加上字??return "nihao"+area; or return area;???????? public class Run public static void main(String []args) Circle circle =new Circle(10); System.out.println("底面积是:"+circle.toString()+"cm"); Conecone1=new Cone(circle); cone1.height=30; cone1.computerVolume();

参考技术A

我说一下个人的观点:

    toString()这个方法顾名思义就是讲别的类型转化为字符串形式

    return就是不执行下面代码直接返回

比如说在MessageBOX.Show()这个方法中,括号内的变量必须是字符串类型的。但是你想将你的INT型的变量放进这个方法中。那么MessageBox.Show(变量.ToString());就可以显示出来了(打个比方)

private void IsCheck()

    int i=0;

    if(i=0)

    

        return;

    

    MessageBox.Show("1");


上面这个方法将不会弹出1这个消息框,这届运行到RETURN就执行完这个方法了

说这么多你理解下吧

c中的return语句???为啥这个函数总是返回 20?

【中文标题】c中的return语句???为啥这个函数总是返回 20?【英文标题】:return statement in c ??? why this function always returning 20?c中的return语句???为什么这个函数总是返回 20? 【发布时间】:2015-03-14 19:00:59 【问题描述】:
int akki(int arr[],int m,int n)
     int i;
     for(i=0;i<m;i++)
      if(arr[i]==n)
           return i;


      return 20;

void main()
int i,m,n,arr[10],a;
printf("Enter size of array:");
scanf("%d",&m);
printf("Enter %d elements of array:",m);
for(i=0;i<m;i++)
scanf("%d",arr[i]);

printf("Enter element to be searched:");
scanf("%d",&n);
a=akki(arr,m,n);
if(a!=20)
printf("Element found at %d position",a+1);
else
printf("Element not found");

它正在返回 20 或一些垃圾值..即使条件匹配......它正在返回 i 的值。它是线性搜索函数,其中 m 是数组 arr 的大小,n 是要搜索的元素...... 请详细解释..我是c语言新手

提前谢谢你

【问题讨论】:

你的函数是 return 20; ,当它从未找到元素时会发生这种情况 即使条件匹配(arr[i]==n)..它返回 20 @Akshay ,不。除非i 是20,否则不会。 @Akshay 当我是 20 岁 时条件会为真 akki 似乎还可以。问题一定出在调用代码中。请给我们看一个完整的例子。 【参考方案1】:

可能有两个原因。

案例 1 [很可能 _always_]

简单。因为您的if(arr[i]==n) 条件不满足,并且i&lt;m 变为假。它来自for() 循环,因此,return 20

案例 2 [_always_ 的可能性较小]

偶然地,n 的值出现在输入数组的第 21 个位置 [索引 20]。

除了编码方面,您是否了解此功能的逻辑目的是什么?如果没有,就从那开始。它在给定长度的数组中搜索特定值,如果数组中没有元素与该值匹配,则返回 20。

现在根据您的意见分析您的案例。


编辑:

看到完整代码后,Mr. CoolGuy有pointed out,使用

scanf("%d",&arr[i]);

仅供参考,您可以查看第 7.19.6.2 章第 12 段,%d 格式说明符,如下所示

...对应的参数应该是一个指向有符号整数的指针。

在您的代码中,arr[i] 的类型为 int。您需要的是int *,即&amp;arr[i]

【讨论】:

即使条件匹配(arr[i]==n)..它返回 20 @Akshay 很好,那么对于索引 20arr[i] 等于 n。这是您可以返回 20 的另一个条件。 你检查n不是20吗? 是的..我已经检查过..我在数组中只取了 2 个元素..仍然返回 20 或一些垃圾 嗯,你错过了一个条件。你说这是因为if(arr[i]==n)从未遇到过,但可以遇到。【参考方案2】:

您的代码有问题。改变

scanf("%d",arr[i]);

scanf("%d",&arr[i]);

这样做是因为scanf 需要int* 类型的参数,但您提供arr[i] 类型的参数int。如果用户为第一个 scanf 输入大于 10 的数字,还添加一个结束程序的检查。

【讨论】:

非常感谢......现在我的代码工作正常......但我在将字符串作为输入时有一个疑问......我们在 scanf 中不使用 &......为什么???? 如果您为char[] 提供索引,则需要&amp;char buffer[80]; scanf("%s", buffer); /* is the same as */ scanf("%s", &amp;buffer[0]); @Akshay,请记住,数组的名称“衰减”为指向其第一个元素的指针。所以,正如 KlasLindback 所说,buffer 等于 &amp;buffer[0] 知道了先生..谢谢您的宝贵答案..你能通过facebook与我联系吗..请我需要你的帮助..我在c和java中有很多问题..我的 id 是 akshay.akky786@gmail.com .. 请再次通过 facebook 与我联系..thankzz @Akshay,不。我有时只登录FB。如果您遇到问题,只需将其发布在 *** 中。一定要发布确切的代码(如果不是太长,也可以是完整的代码)以及问题和/或错误消息。请务必发布问题,并且标题应提示您所面临的问题。

以上是关于这个toString()语句和return语句如何用??求解答:给位大神说一下toString的用法,重点的主要内容,如果未能解决你的问题,请参考以下文章

这个 return 语句究竟指示程序做啥?

如何修复python中不一致的return语句?

函数如何返回没有return语句的东西? [重复]

这个return语句有啥意义吗?

如何跳出嵌套语句之return

如何直接执行SQL语句