Java 如何将扫描仪对象放入参考变量中?
我不知道如何格式化if语句的代码。通常,我会从用户那里获取一个字符串输入并使用.equals,但是我需要使用的对象使这变得不可能。每当我打印数组的内容时,我都会得到引用。我想获得一个存储在数组中的用户输入,并在以后的代码行中打印 问题:如果可能,如何将扫描仪输入分配给“团队”并在If语句中引用以进行比较?我应该如何分配这些值 这是给我的代码Java 如何将扫描仪对象放入参考变量中?,java,object,arraylist,Java,Object,Arraylist,我不知道如何格式化if语句的代码。通常,我会从用户那里获取一个字符串输入并使用.equals,但是我需要使用的对象使这变得不可能。每当我打印数组的内容时,我都会得到引用。我想获得一个存储在数组中的用户输入,并在以后的代码行中打印 问题:如果可能,如何将扫描仪输入分配给“团队”并在If语句中引用以进行比较?我应该如何分配这些值 这是给我的代码 public class Team implements Comparable<Team> { public String toString(
public class Team implements Comparable<Team> {
public String toString(String team, int wins) {
String winningStatement = team + ": " + wins;
return winningStatement;
}
// Data fields
private String name;
private int winCount;
Team() {
name = "Sooners";
winCount = 1;
}
Team(String inputName) {
name = inputName;
winCount = 1;
}
Team(String inputName, int inputWinCount) {
name = inputName;
winCount = inputWinCount;
}
公共类团队实现了可比较的{
公共字符串toString(字符串组,整数获胜){
字符串winningStatement=团队+“:”+获胜;
返回winningStatement;
}
//数据字段
私有字符串名称;
私人温克蒙特;
小组(){
name=“Sooners”;
winCount=1;
}
团队(字符串输入名称){
名称=输入名称;
winCount=1;
}
团队(字符串inputName,int inputWinCount){
名称=输入名称;
winCount=输入winCount;
}
下面是我使用ArrayList的尝试
Scanner scnr = new Scanner(System.in);
Random rando = new Random();
String name = "hi";
int cycles = 0;
int value = 0;
ArrayList<Team> teams = new ArrayList<Team>();
Team myTeam = new Team();
System.out.println("Welcome to the Advanced Sportsball Tracker!");
while (!name.equals("x")) // looping print statement
{ // x loop begins
System.out.println("Which team just won? (x to exit)");
name = scnr.next();
if (!teams.equals(name))
{
teams.add(thisTeam);
myTeam.setWinCount(1);
}
else if (teams.equals(name))
{
myTeam.incrementWinCount();
}
cycles++;
}// x loop ends
Scanner scnr=新扫描仪(System.in);
随机随机数=新随机数();
String name=“hi”;
整数周期=0;
int值=0;
ArrayList团队=新建ArrayList();
团队myTeam=新团队();
System.out.println(“欢迎使用高级运动球跟踪器!”);
while(!name.equals(“x”)//循环打印语句
{//x循环开始
System.out.println(“哪支球队刚刚获胜?(x退出)”;
name=scnr.next();
如果(!teams.equals(name))
{
添加(thisTeam);
myTeam.setWinCount(1);
}
else if(团队相等(名称))
{
myTeam.incrementWinCount();
}
循环++;
}//x循环结束
感谢您的帮助仅从您示例的意图来判断……这似乎就是您试图实现的目标。尽管如此,您关于ArrayList对象与重载构造函数的关系的问题并没有真正意义
public class Team {
// Data fields
private String name;
private int winCount;
public Team() {
name = "Sooners";
winCount = 1;
}
public Team(String inputName) {
name = inputName;
winCount = 1;
}
Team(String inputName, int inputWinCount) {
name = inputName;
winCount = inputWinCount;
}
public String toString(String team, int wins) {
return team + ": " + wins;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getWinCount() {
return winCount;
}
public void setWinCount(int winCount) {
this.winCount = winCount;
}
void incrementWinCount() {
winCount++;
}
}
void runSystem() {
List<Team> teams = new ArrayList<>();
Scanner scnr = new Scanner(System.in);
int cycles = 0;
System.out.println("Welcome to the Advanced Sportsball Tracker!");
System.out.println("Which team just won? (x to exit)");
String name = scnr.next();
while (!"x".equals(name)) {
final String teamName = name;
Team team = teams.stream().filter(t -> teamName.equals(t.getName())).findAny().orElse(null);
if (team == null) {
team = new Team(teamName, 1);
teams.add(team);
}
else {
team.incrementWinCount();
}
cycles++;
System.out.println("Which team just won? (x to exit)");
name = scnr.next();
}
}
公共类团队{
//数据字段
私有字符串名称;
私人温克蒙特;
公共团队(){
name=“Sooners”;
winCount=1;
}
公共团队(字符串输入名称){
名称=输入名称;
winCount=1;
}
团队(字符串inputName,int inputWinCount){
名称=输入名称;
winCount=输入winCount;
}
公共字符串toString(字符串组,整数获胜){
返回队+“:”+获胜;
}
公共字符串getName(){
返回名称;
}
公共void集合名(字符串名){
this.name=名称;
}
public int getWinCount(){
返回winCount;
}
公共无效设置winCount(内部winCount){
this.winCount=winCount;
}
无效增量WinCount(){
winCount++;
}
}
void runSystem(){
列表团队=新建ArrayList();
扫描仪scnr=新扫描仪(System.in);
整数周期=0;
System.out.println(“欢迎使用高级运动球跟踪器!”);
System.out.println(“哪支球队刚刚获胜?(x退出)”;
String name=scnr.next();
而(!“x”。等于(名称)){
最终字符串teamName=name;
Team Team=teams.stream().filter(t->teamName.equals(t.getName()).findAny().orElse(null);
如果(团队==null){
团队=新团队(团队名称,1);
团队。添加(团队);
}
否则{
team.incrementWinCount();
}
循环++;
System.out.println(“哪支球队刚刚获胜?(x退出)”;
name=scnr.next();
}
}
为什么“重载构造函数”对“数组列表”很重要?ArrayList不调用构造函数。在诊断问题和寻求帮助时,删除不必要的/不相关的信息。对不起,不知道你在问什么。我在这里没有看到任何关于循环的,我不明白你认为什么是错的。我能看到的唯一一件事是你的if
条件似乎在比较一个列表o一个永远不会有好结果的字符串。然后,我对构造函数的性质更为困惑。我是否得到了一个具有特定格式(int x,string y)的对象或类类型“Team”,或者我可以将具有任何基元值(int 10)的对象分配给“Team”对象?很抱歉,我今天学到了这两个概念,我把它们弄糊涂了。是的,因为你不知道术语,所以你的问题没有太多意义。我建议你找一本书或一本教程来研究它。如果你有一个特定的问题,你可以回到堆栈溢出因为你知道正确的词语来连贯地提出你的问题。很抱歉这么严厉,但是如果你不能真正理解你想问什么,那么很难帮助你。