我正在編寫一個程序來根據產品標題生成html元數據。所有程序要求的(目前)是產品標題和其他2個細節。這是當前不正確的輸出:if(string.contains)在最終輸出中混合變量放置
Please paste model title.
(我的輸入:布加迪威龍1:18藍)
<METANAME="DESCRIPTION"CONTENT="Shop for Bugatti diecast model cars at [WEBSITE REMOVED]">
<METANAME="ABSTRACT"CONTENT=Shop for diecast model cars at [WEBSITE REMOVED].
<METANAME="KEYWORDS"CONTENT=「diecast cars, diecast quality scale cars,
diecast model cars, model cars, collectible cars, Veyron diecast model, quality diecast cars, diecast 1:18">
我希望是:
Please paste model title.
(我的輸入:布加迪威龍1:18藍色)
<METANAME="DESCRIPTION"CONTENT="Shop for Bugatti Veyron 1:18 Blue diecast model cars at [WEBSITE REMOVED]">
<METANAME="ABSTRACT"CONTENT=Shop for diecast model cars at [WEBSITE REMOVED].
<METANAME="KEYWORDS"CONTENT=「diecast cars, diecast 1:18 scale cars,
diecast model cars, model cars, collectible cars, diecast model, Bugatti diecast cars, diecast Veyron">
請注意,標題的差異不是標題,只是一個字。規模在年底,而不是它應該是說,等
的代碼,在截短的方式,以避免張貼300+臺詞是:
import java.util.Scanner;
public class MetagenV3 {
public static void main (String[] args) {
Scanner sc = new Scanner(System.in);
String title;
String abstr = "Shop for diecast model cars at [WEBSITE REMOVED]";
String scale;
String diecastManu;
String metaModel;
String metaMake;
String defaultstring = "quality";
String[] metaMakesList = {"Abarth", "Acura", "Ahrens", "Alfa Romeo"
+"Alpine Renault", "AMC", "American LaFrance", "Aprilia", "Aston Martin"
+"Audi", "Austin", "Austin-Healey", "Bedford", "Benelli", "Bentley", "BMW"
+"Buffalo", "Bugatti", "Buick","Cadillac","Caterham", "Chaparrel"
+ "Checker","Chevrolet","Chrysler","Citroen", "Cleveland", "Cord","DAF"
+ "Daimler","Dakota","Datsun","Dauer"}; // ETC ETC
String[] scaleList = {"1:12","1:18","1:24","1:32","1:43","1:64"}; // ETC ETC
System.out.println("Please paste model title.");
title = sc.next();
if (title.toLowerCase().contains(metaMakesList[0].toLowerCase()))
{ metaMake = metaMakesList[0];}
if (title.toLowerCase().contains(metaMakesList[1].toLowerCase()))
{ metaMake = metaMakesList[1];}
if (title.toLowerCase().contains(metaMakesList[2].toLowerCase()))
{ metaMake = metaMakesList[2];}
if (title.toLowerCase().contains(metaMakesList[3].toLowerCase()))
{ metaMake = metaMakesList[3];}
if (title.toLowerCase().contains(metaMakesList[4].toLowerCase()))
{ metaMake = metaMakesList[4];}
if (title.toLowerCase().contains(metaMakesList[5].toLowerCase()))
{ metaMake = metaMakesList[5];}
// ETC, ETC
else {
metaMake = defaultstring;
}
if (title.toLowerCase().contains(scaleList[0].toLowerCase()))
{ scale = scaleList[0]; }
if (title.toLowerCase().contains(scaleList[1].toLowerCase()))
{ scale = scaleList[1]; }
if (title.toLowerCase().contains(scaleList[2].toLowerCase()))
{ scale = scaleList[2]; }
if (title.toLowerCase().contains(scaleList[3].toLowerCase()))
{ scale = scaleList[3]; }
// ETC, ETC
else { scale = defaultstring;}
System.out.println("Please paste model manufacturer.");
diecastManu = sc.next();
System.out.println("Please paste car model (e.g Skyline");
metaModel = sc.next();
String fullOutput = "<METANAME=" + "\"DESCRIPTION\"" + "CONTENT=\"" + "Shop for " + title + " "
+ "diecast model cars at [WEBSITE REMOVED]\"" +">" + "\n"
+ "<METANAME=" + "\"ABSTRACT\"" + "CONTENT=" + abstr + "\n"
+ "<METANAME=" + "\"KEYWORDS\"" + "CONTENT=" + "「diecast cars, diecast " + scale + " "
+ "scale cars," + "\n" + "diecast model cars, modelcars, collectable cars, "
+ diecastManu + " diecast"
+ " model, " + metaMake + " diecast cars, diecast " + metaModel +"\">";
System.out.println(fullOutput);
}
}
此外,它也忽略:
System.out.println("Please paste model manufacturer.");
diecastManu = sc.next();
System.out.println("Please paste car model (e.g Skyline");
metaModel = sc.next();
我知道這個問題很長,不是很簡單,但我想不出一個更好的方式來顯示發生了什麼事情。
你有很多if語句,但沒有else-if語句。 – Makoto 2014-09-04 15:35:07
更換if轉換開關會更乾淨嗎?我無法弄清楚如何。 – BenjaminJB 2014-09-04 15:35:56
您應該查看'Scanner.next()'的文檔。 http://docs.oracle.com/javase/7/docs/api/java/util/Scanner.html#next()。你對'next()'的調用只返回第一個單詞。您還應該嘗試通過調試器來運行它,查看從輸入中存儲的實際值,以及正在命中哪些if語句。 – forgivenson 2014-09-04 15:36:36