如何解决如何在Java中打印值而不是内存位置?
我正在尝试解决有关leetcode的一个流行问题,即我的ide(intellij)上的两个和。我期望它可以打印数组内部值的索引,但是可以打印内存地址。我进行了一些搜索,发现我需要重写为string(),我进行了重写,并且它仍在打印内存地址。我究竟做错了什么?如果有人可以帮助我,我将不胜感激。谢谢。 :)
import java.util.HashMap;
import java.util.Map;
public class Main {
@Override
public String toString() {
return super.toString();
}
public static void main(String[] args) {
int arr[]={2,7,11,15};
int target= 9;
int result[]=(find(arr,target));
System.out.println(result);
}
public static int[] find(int[] arr,int target){
Map<Integer,Integer> hm =new HashMap<>();
for(int i=0;i<arr.length;i++){
int num= target- arr[i];
if(hm.containsKey(num)){
return new int[]{hm.get(num),i};
}
hm.put(arr[i],i);
}
return new int[]{-1,-1};
}
}
解决方法
因此,有两种方法可以执行此操作。首先,您得到的输出基本上是哈希值。您要做的是打印出该数组中的元素。第一种方法是遍历数组,然后简单地打印出如下值:
for(int j=0;j<result.length;j++){
System.out.println(result[j]);
}
另一种方法是,如果您仅使用Array类及其toString()方法。
System.out.println(Arrays.toString(yourArray));
这两种方法都应该起作用。
,您的问题-已得到解决-搁置一旁,如果您想在单个文件中设置环境,则对于Main.java
文件来说,此方法可能会正常运行:
import java.util.*;
// import javafx.util.*;
class Solution {
public static final int[] twoSum(int[] nums,int target) {
int[] indices = new int[2];
HashMap<Integer,Integer> map = new HashMap<>();
for (int index = 0; index < nums.length; index++) {
if (map.get(target - nums[index]) != null) {
indices[1] = index;
indices[0] = map.get(target - nums[index]);
return indices;
}
map.put(nums[index],index);
}
return indices;
}
}
class Main {
public static void main(String[]args) {
Solution s = new Solution();
int arr[] = {2,7,11,15};
int target = 9;
System.out.println(s.twoSum(arr,target)[0]);
System.out.println(s.twoSum(arr,target)[1]);
}
}
打印:
0
1
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。