为什么是输出?:球体 0
它以某种方式隐式调用 toString() 方法?这是如何运作的 ?
class BerylliumSphere {
private static long counter = 0;
private final long id = counter++;
public String toString() {
return "Sphere " + id;
}
}
public class Test {
public static void main (String[] args) {
BerylliumSphere spheres = new BerylliumSphere();
System.out.println(spheres);
}
}
// output: Sphere 0
Run Code Online (Sandbox Code Playgroud) 在下面的代码中,为什么包含的两行会System.out.println(person);
产生不同的输出?第二行间接调用了Job.toString
产生字符串的方法"Manager"
,但第一行神秘地没有产生Job@28f67ac7
。在person.put("a", "b");
我看来,这两者之间的界限应该没有任何区别。
代码:
import java.util.*;
import org.apache.commons.lang3.builder.*;
class Job extends HashMap<String, String> {
@Override public String toString() {
return "Manager";
}
}
class Person extends HashMap<String, String> {
Job job;
Person() {
this.job = new Job();
}
@Override public String toString() {
return ToStringBuilder.reflectionToString(this);
}
}
class Test {
public static void main(String[] args) {
Person person = new Person();
System.out.println(person);
person.put("a", "b");
System.out.println(person);
}
}
Run Code Online (Sandbox Code Playgroud)
安慰:
Person@2b80d80f[job=Job@28f67ac7,threshold=0,loadFactor=0.75]
Person@2b80d80f[job=Manager,threshold=12,loadFactor=0.75]
Run Code Online (Sandbox Code Playgroud) java tostring apache-commons apache-commons-lang apache-commons-lang3
我已经编写了一个用于无向图的类和一个符号表来将字符串转换为数字,反之亦然但是这两个字符串方法不起作用,因为我得到了堆栈溢出错误.我实现了一个LinkedStack,它与java库中的堆栈相同.我没有收到编译错误,如果能查看toString方法,我将不胜感激.其他方法工作正常.这是下面的代码.我认为问题是当我调用迭代器时
public class EdgeWeightedGraph {
private final int V;
private int E;
private LinkedStack<Edge>[] adj;
public EdgeWeightedGraph(int V){
this.V = V;
this.E = 0;
adj = new LinkedStack[V];
for (int v = 0; v < V; v++)
{
adj[v] = new LinkedStack<Edge>();
}
}
public int V(){
return V(); // This was the error. thank you for spotting it :)
}
public int E(){
return E;
}
public int degree(int v){
return adj[v].size();
}
public void addEdge(Edge e){
int v …
Run Code Online (Sandbox Code Playgroud) 我有一个包含多个对象的数组。为了向您展示数组的结构,它是这样的
0: {lat: "7.9511758", lon: "80.7426426"}
1: {lat: "6.9566662", lon: "80.7608237"}
2: {lat: "6.3872411", lon: "80.4952031"}
3: {lat: "5.9435367", lon: "80.4543506"}
4: {lat: "6.4543259", lon: "81.5608547"}
5: {lat: "7.8554038", lon: "80.6491562"}
6: {lat: "6.8556687", lon: "81.0505434"}
7: {lat: "7.293609", lon: "80.6391363"}
8: {lat: "6.802641", lon: "80.7899271"}
9: {lat: "8.3351457", lon: "80.3332731"}
10: {lat: "6.0237174", lon: "80.2153073"}
11: {lat: "7.9341074", lon: "80.943138"}
12: {lat: "7.9317005", lon: "81.5589219"}
13: {lat: "6.8377508", lon: "81.8086608"}
Run Code Online (Sandbox Code Playgroud)
我想使用这个数组的数据创建一个字符串。我需要创建一个看起来像这样的字符串。我的数据存储在一个状态为this.state.destinationLocation
7.9511758,80.7426426|6.9566662,80.7608237|6.3872411,80.4952031|.....
Run Code Online (Sandbox Code Playgroud)
我怎样才能达到这个结果?
出于某种原因,当我尝试调用toString
文字数字时,它会失败:
> 5.toString()
SyntaxError: Unexpected token ILLEGAL
Run Code Online (Sandbox Code Playgroud)
所以我尝试将它放在一个变量中,它起作用了:
> var five = 5
undefined
> five.toString()
"5"
Run Code Online (Sandbox Code Playgroud)
我觉得这有点奇怪,经过一些更多的实验,我发现在括号中包含一个文字以某种方式使它工作:
> (5).toString()
"5"
Run Code Online (Sandbox Code Playgroud)
这看起来很奇怪!为什么在括号中包装文字会改变什么?为什么不起作用5.toString()
?
对于我的班级,我遇到了一个问题,我必须创建一个名为Fan的类.然后我被告知要分配不同的字段,其中一个是一个调用的布尔值,如果真的意味着风扇打开了.最后被告知这一点
一个名为的方法toString()
,返回风扇的字符串描述.如果风扇打开,则该方法返回一个组合字符串中的风扇速度,颜色和半径.如果风扇未打开,则该方法将返回扇形颜色和半径以及一个组合字符串中的"扇形关闭"字符串.编写一个创建两个Fan对象的Demo类.为第一个风扇分配以下值:speed:1000rpm,radius:12,color:blue和fan-state:on.将以下值分配给第二个风扇:速度:2000rpm,半径:5,颜色:蓝色和扇形状态:关闭.通过调用toString方法显示对象.
所以我继续上课,
包p2 ;
public class Demo {
public static void main(String[] args) {
Fan f1 = new Fan(1000, true, 12, "blue");
Fan f2 = new Fan(2000, false, 5, "blue");
// 1000rpm, radius: 12, color: blue, and fan-state: on
//speed: 2000rpm, radius: 5, color: blue, and fan-state: off
System.out.println(f1);
System.out.println("----------------------------");
System.out.println(f2);
}
}
Run Code Online (Sandbox Code Playgroud)
包p2 ;
public class Fan {
private int speed;
private boolean on;
private double radius;
private String color;
public Fan()
{
speed = 0; …
Run Code Online (Sandbox Code Playgroud) 我们使用__toString()来返回类的默认值,如下所示:
<?php
class my
{
public function __toString()
{
return "asdasd";
}
}
?>
Run Code Online (Sandbox Code Playgroud)
它只返回字符串类型.但我想返回资源类型:
<?php
class my
{
public function __toString()
{
return imagecreatefromjpeg("image.jpg");
}
}
?>
Run Code Online (Sandbox Code Playgroud)
它不起作用.怎么做?是否有任何方法而不是__toString()或任何方式使用__toString?
即使我填写了正确的引脚,Toast仍然拒绝接入访问.
我需要将用户锁定在自助服务终端模式应用中,只有使用正确的引脚,他们才能访问设置和退出选项.
public void onClick(View v) {
AlertDialog.Builder alert = new AlertDialog.Builder(FullscreenActivity.this);
alert.setTitle("PIN:");
//alert.setMessage("Message");
final EditText pinEntry = new EditText(FullscreenActivity.this);
alert.setView(pinEntry);
alert.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
String pin = pinEntry.getText().toString().trim();
String secret = "0000";
if (pin == secret){
Toast.makeText(getApplicationContext(),"Access Approved", Toast.LENGTH_SHORT).show();
}
else {
Toast.makeText(getApplicationContext(),"Access Denied", Toast.LENGTH_SHORT).show();
}
Toast.makeText(getApplicationContext(),pin, Toast.LENGTH_SHORT).show();
}
});
alert.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
}
});
alert.show();
}
});
Run Code Online (Sandbox Code Playgroud) Enum.ToString(string)
不支持直接使用精度说明符X2
或D5
将填充应用于数值. 格式类似ToString("X")
或ToString("D")
已实现且记录良好.当然,我可以明确地将其转换为int
之前,因此使用为int实现的格式说明符将其转换为填充字符串.
我想知道是否有一些直接支持enum的这个功能,而不需要强制转换它们.乍一看似乎很奇怪,这不是直接实现的,因为它是为int或其他数字类型完成的.但也许我错过了一些更重要的东西,这些东西可以明确地解释说它没有像枚举那样完成?
public enum Number
{
Ten = 10
}
Console.WriteLine(Number.Ten); //OK: Ten
Console.WriteLine(Number.Ten.ToString()); //OK: Ten
Console.WriteLine(Number.Ten.ToString("D")); //OK: 10
Console.WriteLine(Number.Ten.ToString("D5")); //Expected 00010 - Failed: System.FormatException, can only be "G","g","X","x","F","f","D" or
Console.WriteLine(Number.Ten.ToString("X")); //OK: 0000000A
Console.WriteLine(Number.Ten.ToString("X2")); //Expected 0A - Failed: System.FormatException, can only be "G","g","X","x","F","f","D" or "d"
Console.WriteLine(10.ToString("X2")); //OK: 0A
Console.WriteLine(10.ToString("D5")); //OK: 00010
Console.WriteLine(((int)Number.Ten).ToString("X2"));//OK: 0A
Run Code Online (Sandbox Code Playgroud)
接受答案的简短摘要:它没有明确表示,因为根据基础类型的大小,它已经被隐含地完成了.因此,如果你喜欢X2
而不是X8
只使用字节作为基础类型,ToString("X")
并将表现得像ToString("X2")
.
我有一小段C++代码:
#include <array>
#include <string>
#include <iostream>
int main()
{
std::string name = "mario";
std::cerr << "Hello world! " + name + "\n";
std::array<float, 4> arr = {12, 12.3, 13, 14};
std::cerr << "first item is: " + std::to_string(arr.front()) << std::endl;
std::cerr << "last item is: " + std::to_string(arr[-1]) << std::endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
它编译并输出以下内容:
work ? c++ -std=c++11 -o hello_world hello.cpp
work ? ./hello_world
Hello world! mario
first item is: 12.000000
last item is: 0.000000
Run Code Online (Sandbox Code Playgroud)
但是,如果我注释掉前两行,如:
#include <array>
#include …
Run Code Online (Sandbox Code Playgroud) 我创建了一个包含两个类的java程序.一个类(Main)包含传递到第二个类(Planning)的数据数组.第二个类(Planning)使用此数组为其变量的输入和输出赋值.代码如下所示:
////Main.java///
import java.util.ArrayList
public class Main{
public enum State{A, D, H};
Planning plan = new Planning[]{
new Plan(new State[]{State.A,State.A,State.A,State.A}, new State[]{State.D,State.A,State.A,State.D,State.A,State.A})}
Run Code Online (Sandbox Code Playgroud)
另一个Class Planning.java看起来像这样:
public class Planning {
Main.State[] input;
Main.State[] output;
Planning(Main.State[] input,Main.State[] output){
this.input = input;
this.output = output;
System.out.println("The state is " + input);
}
Run Code Online (Sandbox Code Playgroud)
但是,当我打印出"结尾处的输入"时,它会显示出来
[LMain $国家; @ 4e98f805
我希望它显示从main函数传递到它的数组.有人可以告诉我如何实现这一目标?
我正在将dataRow值转换为布尔值但得到以下异常:
字符串未被识别为有效的布尔值
这是代码:
bool a = Convert.ToBoolean(row["ISMOVING"].ToString());
Run Code Online (Sandbox Code Playgroud)
row["ISMOVING"]
包含1
我究竟做错了什么?
请找到以下示例:
using System;
class MyClass
{
static int count = 0;
int id;
public MyClass()
{
id = count;
count++;
}
public override string ToString()
{
return "MyClass object #" + id;
}
}
class Test
{
static void Main()
{
MyClass ob1 = new MyClass();
MyClass ob2 = new MyClass();
MyClass ob3 = new MyClass();
Console.WriteLine(ob1);
Console.WriteLine(ob2);
Console.WriteLine(ob3);
}
}
Run Code Online (Sandbox Code Playgroud)
程序的输出如下所示:
MyClass对象#0
MyClass对象#1
MyClass对象#2
正如您在此处所见,方法ToString()在名为"MyClass"的类中被重写,但"MyClass"不是从任何类派生的,根本不存在继承.如果没有涉及继承如何使用'覆盖'?
如果我们将ToString()更改为任何其他方法名称说'HelloString()',如下面的代码片段所示:
public class Program
{
public static void Main(string[] args)
{
MyClass ob1 = …
Run Code Online (Sandbox Code Playgroud)